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

  1. 云栖社区>
  2. 博客>
  3. 正文

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

杰克.陈 2015-02-02 08:56:00 浏览820
展开阅读全文
原文:一名小小的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 

网友评论

登录后评论
0/500
评论