一名小小的SQL Server DBA想谈一下SQL Server的能力

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS SQL Server,基础系列 2核4GB
简介: 原文:一名小小的SQL Server DBA想谈一下SQL Server的能力一名小小的SQL Server DBA想谈一下SQL Server的能力 百度上暂时还没有搜索到相关的个人写的比较有价值的文章,至少在中文网络的世界里面没有 但是在微软的网站有这样一篇文章:《比较 SQL Serve...
原文: 一名小小的SQL Server DBA想谈一下SQL Server的能力

一名小小的SQL Server DBA想谈一下SQL Server的能力

百度上暂时还没有搜索到相关的个人写的比较有价值的文章至少在中文网络的世界里面没有

但是在微软的网站有这样一篇文章《比较 SQL Server 与 IBM DB2

文章从下面几个方面进行了对比

1、TCO和ROI
2、性能和可扩展性
3、高可用性
4、安全
5、管理
6、开发效率
7、商业智能和数据仓库
8、OLTP
9、SAP集成

文章介绍得比较牛逼

性能与可扩展性

SQL Server 的性能和可扩展性优于IBM DB2.

  • 基准显示SQL Server 能够掌控大型工作负荷:

     

  • SQL Server 2008 包括最新的性能与可扩展性 能够优于DB2为大型工作负荷提供更好的性能:

    • o 改进分区表、索引、范围及其他
    • o 压缩支持符合甚至超越了IBM DB2 UDB资源管理能够控制更细的CPU和内存资源
    • o 性能数据收集器可以跨企业定位问题、调整和监控SQL Server实例
    • o 高度调整的ETL引擎  目前保持了世界ETL性能纪录

成功案例

  • Citi Group runs Lava market montage解决方案 运行在SQL Server上, 达到每秒200,000次以上的更新频率

  • Xerox 采用SQL Server管理每天7百万的事务处理达到99.999%运行时间

  • American Power Conversion 迁移至 SQL Server企业版---实现100%的快速响应时间节省费用800,000美元

  • VHA  从DB2的大型机迁移至SQL Server—提升了25%效率, 降低了89%的复制时间, 显著降低了总拥有成本.

  • Countrywide Home Loans 选择了SQL Server以提高性能获得高可用性

  • Microsoft  IT  使用SQL Server来驱动 27TB的全球法定安全工具

  • Nasdaq, 全球领先的科技股交易实时定票系统采用SQL Server处理高达每秒5000的事务量.

  • Unisys UPSS system, 在 SQL Server上架构23 TB的数据仓库进入了数据仓库峰值负荷的Top10行列.

  • Premier BankCard 将12 TB的数据仓库和OLTP数据库升级到SQL Server.

  • Danske Supermarket  在 SQL Server分析服务上运行600GB的的多维分析以及10TB的商业智能数据

还有一个帖子《sqlserver的并发处理能力到底如何呀高手都说说

 

 

其实这个题目是too open ended无论大家认为它的定位在Oracle之下还是只适合于中小型数据库我只想说一下它在我眼中的能力

我相信我写完后其他数据库爱好者就会出来喷了Oracle的、MySQL的毕竟这种文章跟《C#和JAVA哪家强》之类的文章是比较类似的。

 

我在这篇文章主要讲两个大家最care的方面数据量、性能和功能

其实大家刚开始用数据库最关心的莫过于OLTP场景里面的性能了还有这个数据库系统的所能够hold住的数据量

 


一、hold住大数据量

SQL Server作为一个成熟的商业数据库对于hold住大数据量是没有问题的

正如上面文章提到的Microsoft  IT  使用SQL Server来驱动 27TB的全球法定安全工具

 

在本人所在公司也有一些比较大的数据库数据库体积大的也有7~8TB小的几十MB

很多人说“SQL Server不能处理海量数据数据量一大SQL Server就处理不了”

我想问“海量数据究竟有多少数据1亿10亿100亿1TB10TB100TB”

反正我天天都对着这麽多数据上TB也有、上十亿条也有还是这样用SQL Server管理它们。

 

我这里想说明一下如何比较数据量比较数据量应该用数据库的实际占用体积大小来比较而不应该用单表数据量的大小来比较

这里有一个例子之前我们数据库服务器里有一个表有六个字段都是int类型单表数据量已经1亿+了但是数据库的大小只有20G不到

在我眼中只是一个比较小的数据库虽然它的数据量比较惊人

在园友马非码的博客里曾经写到一篇文章《我是如何在SQLServer中处理每天四亿三千万记录的》文章是非常多的推荐

但是在我眼里文章没有多少新意正如我刚才说的四亿三千万数据可能就<100G的数据这麽多数据其实跟SQL Server是否能hold住

没有多大关系而是跟博主的架构能力有关系数据库架构无非就是 分表-》分库-》分机房解决CAP问题还有就是MVCC的问题。

 

 

实际上超大型数据库VLDB跟小型数据库管理起来是不一样的这里我是不管它数据量我只管它的数据库实际占用体积

对于管理大型数据库里面的大表大家第一个想法就是使用表分区来管理它表分区从SQL Server2005开始推出到现在SQL Server2014还是使用表分区

大家会说微软还是没有什么突破还是用这麽老的表分区技术来管理大表甚至于有时候我做了表分区但是整个数据库这麽大我还是做不了完整备份。。。

貌似在大家的眼中表分区只是作为一种提升查询性能的工具更直接来说就是提升Select Query性能的利器

但是对于我们DBA来说分区表的优势更多的体现在管理方面

分区表的管理优势如下

1、压缩单独某个分区的数据SQL2008

2、按分区的统计信息SQL2014 CREATE STATISTICS 和相关统计信息语句现在允许通过使用 INCREMENTAL 选项创建按分区的统计信息

3、联机重新生成某个分区的数据SQL2014 针对联机索引操作事件类的进度报告现在具有两个新数据列PartitionId 和 PartitionNumber

4、联机重新组织某个分区的数据SQL2005

5、文件组备份和段落还原(SQL2005)

6、CHECKFILEGROUPSQL2005

7、交换分区(删除历史数据或归档 或进行ETL)

8、锁升级可以提升到分区锁而不是直接到表锁SQL2008

 

其实只要表分区做得好分区区间做得合理定时维护分区表hold住大数据量是没有多少问题的。

 

前年看到一篇文章对于关系型数据库如果数据库的实际占用体积到了100TB关系型数据库已经无能为力了该到Hadoop上场的时候了。

本人承认如果你的数据库真的有100TB那么SQL Server可能会没有能力handle但是你的数据库真的reached 100TB那么你们公司的数据库架构师

是不是有责任承担这个风险是不是他的数据库架构没有做好没有分库分表分机房。

 

我先不管关系型数据库是否有能力handle这麽大的数据量后来我又看了一个视频。

视频里面甲骨文技术产品事业部总经理吴承杨介绍了关系型数据库和Hadoop的区别Hadoop是处理非结构化数据的

而关系型数据库是处理结构化数据的两者的侧重点是不一样Hadoop处理的是海量非结构化数据一般数据量PB级别

而吴承杨总经理也讲到非结构化数据通常指代的就是网页数据Hadoop把这些数据经过处理之后就存放进去关系型数据库里面以便查询

所以不能把Hadoop和关系型数据库相提并论。

 


二、SQL Server的性能

 

性能方面我只想谈论一下IO

大家知道不管Windows还是Linux都是 用户程序->OS内核->存储设备这种架构用户程序和OS内核之间存在一套IO接口

同样OS内核和存储设备之间一样存在一套IO接口有异步同步存储设备的Write Through和Write Back等参数

而Linux操作系统的IO行为跟Windows有很多不同之处的两者的文件系统的不同两者的IO设备驱动不一样IO调度模型不一样

 

由于本人对Windows和Linux的IO调度没有太深入研究大家可以参考下面两篇文章

Linux五种IO模型性能分析

Windows五种IO模型性能分析

 

其实一般不是太差的数据库都可以达到上千的TPS上万的QPS上万的并发连接

由于本人没有亲自测试也没有环境就不再详细说了

 

之前看过一本书里面说Linux的IO调度模型对于使用网络存储的机器来讲更加好上层的一个请求对于下层少量的网络数据包

而Windows上层的一个IO请求会对网络存储发出比Linux还多的网络数据包好像是iSCSI协议所以运行在Linux上的Oracle和MySQL会更胜一筹

 

但是可以说SQL Server针对Windows系统做过特别优化在TPS和QPS各方面测试中不会跟主流数据库相差很远不然的话SQL Server早就从地球上消失了


三、SQL Server的功能

 

本人觉得SQL Server的功能做得是比较完善了最起码对于一个商业数据库其他竞争对手有的功能SQL Server基本都有

例如限制资源使用这个功能

SQL Server的资源调控器可以针对登录用户限制它所使用的CPU、内存、IO资源

而MySQL的Query Throttling针对的是

限制用户每小时的修改数据库数据的数量

控制用户每小时打开新连接的数量

限制有多少用户连接MYSQL服务器

 

MySQL的Query Throttling偏向于查询方面的

我这里不评论好坏我只想说各有各的优缺点

 

到目前为止我还未发现其他数据库有的功能SQL Server没有的或者本人才疏学浅可能Oracle有的功能而SQL Server没有的

比如Oracle中的位图索引而在SQL Server中位图过滤(Bitmap)运算符

相关文章《SQL Server优化器特性-位图过滤(Bitmap)

 

很多时候只是大家的实现方式不一样已而而不代表SQL Server没有


总结

本人做DBA的时间不长在学校开始接触到毕业之后公司使用SQL Server到现在由它来带我进入DBA这个行业

对于SQL Server这个产品本人是比较感激的每天跟各位SQL Server爱好者讨论如何使用它不亦乐乎

 

只可惜SQL Server在中国国内市场越来越不活跃不知道以后会不会有尽头。

 

如有不对的地方欢迎大家拍砖o(∩_∩)o 

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS&nbsp;SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/sqlserver
目录
相关文章
|
2月前
|
SQL 数据库
执行 Transact-SQL 语句或批处理时发生了异常。 (Microsoft.SqlServer.ConnectionInfo)之解决方案
执行 Transact-SQL 语句或批处理时发生了异常。 (Microsoft.SqlServer.ConnectionInfo)之解决方案
293 0
|
3月前
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
4月前
|
SQL XML 运维
SQL Server 运维常用sql语句(三)
SQL Server 运维常用sql语句(三)
28 1
|
4月前
|
Java 应用服务中间件 Maven
从零到英雄:一步步构建你的首个 JSF 应用程序,揭开 JavaServer Faces 的神秘面纱
【8月更文挑战第31天】JavaServer Faces (JSF) 是一种强大的 Java EE 标准,用于构建企业级 Web 应用。它提供了丰富的组件库和声明式页面描述语言 Facelets,便于开发者快速开发功能完善且易于维护的 Web 应用。本文将指导你从零开始构建一个简单的 JSF 应用,包括环境搭建、依赖配置、Managed Bean 编写及 Facelets 页面设计。
102 0
|
4月前
|
SQL 关系型数据库 MySQL
【超全整理】SQL日期与时间函数大汇总会:MySQL与SQL Server双轨对比教学,助你轻松搞定时间数据处理难题!
【8月更文挑战第31天】本文介绍了在不同SQL数据库系统(如MySQL、SQL Server、Oracle)中常用的日期与时间函数,包括DATE、NOW()、EXTRACT()、DATE_ADD()、TIMESTAMPDIFF()及日期格式化等,并提供了具体示例。通过对比这些函数在各系统中的使用方法,帮助开发者更高效地处理日期时间数据,满足多种应用场景需求。
480 0
|
4月前
|
SQL 关系型数据库 MySQL
SQL Server、MySQL、PostgreSQL:主流数据库SQL语法异同比较——深入探讨数据类型、分页查询、表创建与数据插入、函数和索引等关键语法差异,为跨数据库开发提供实用指导
【8月更文挑战第31天】SQL Server、MySQL和PostgreSQL是当今最流行的关系型数据库管理系统,均使用SQL作为查询语言,但在语法和功能实现上存在差异。本文将比较它们在数据类型、分页查询、创建和插入数据以及函数和索引等方面的异同,帮助开发者更好地理解和使用这些数据库。尽管它们共用SQL语言,但每个系统都有独特的语法规则,了解这些差异有助于提升开发效率和项目成功率。
429 0
|
3月前
|
SQL 数据库
数据库数据恢复—SQL Server数据库报错“错误823”的数据恢复案例
SQL Server附加数据库出现错误823,附加数据库失败。数据库没有备份,无法通过备份恢复数据库。 SQL Server数据库出现823错误的可能原因有:数据库物理页面损坏、数据库物理页面校验值损坏导致无法识别该页面、断电或者文件系统问题导致页面丢失。
104 12
数据库数据恢复—SQL Server数据库报错“错误823”的数据恢复案例
|
22天前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第8天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括系统准备、配置安装源、安装 SQL Server 软件包、运行安装程序、初始化数据库以及配置远程连接。通过这些步骤,您可以顺利地在 CentOS 系统上部署和使用 SQL Server 2019。
|
23天前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第7天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括系统要求检查与准备、配置安装源、安装 SQL Server 2019、配置 SQL Server 以及数据库初始化(可选)。通过这些步骤,你可以成功安装并初步配置 SQL Server 2019,进行简单的数据库操作。
|
2月前
|
存储 数据挖掘 数据库
数据库数据恢复—SQLserver数据库ndf文件大小变为0KB的数据恢复案例
一个运行在存储上的SQLServer数据库,有1000多个文件,大小几十TB。数据库每10天生成一个NDF文件,每个NDF几百GB大小。数据库包含两个LDF文件。 存储损坏,数据库不可用。管理员试图恢复数据库,发现有数个ndf文件大小变为0KB。 虽然NDF文件大小变为0KB,但是NDF文件在磁盘上还可能存在。可以尝试通过扫描&拼接数据库碎片来恢复NDF文件,然后修复数据库。