数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

浅析SQL Server 2008企业级新特性


发布日期:2023年07月13日
 
浅析SQL Server 2008企业级新特性

SQL Server 已经发布我们可以看到它在各方面都有了显着的进步这些让人侧目之处和失望之处都有可能极大地影响大型企业的采购意向

微软SQL Server 的开发代号是Katmai这个名字来源于阿拉斯加半岛东端阿拉斯加州北部阿留申山区的一座活火山对数据库而言可能并不是个最好的比喻(嘿嘿目前为止Katmai火山还没有在我头上爆发过)低调的Katmai看起来似乎是Yukon的一个好的接班人而Yukon是SQL Server 的开发代号

在基于对SQL Server 彻底的面向企业的改进之后Katmai为大规模部署带来了非常引人注目的特性比如数据库引擎中的数据及备份压缩稀疏列压缩与过滤索引这些功能都是为了节省存储空间环保绿色另外别忘了还有Change Data Capture其在表中捕捉生成数据的差别以便更新数据仓库

这些都只不过是冰山一角(喔不是冰山是火山)还有许多其他的新特性如基于策略的管理——这是针对中小企业和大型企业的不仅这些SQL Server 的各个方面都让人留下了深刻的印象

更多的数据更少的存储空间

一般来说数据库中有两种类型的压缩行压缩与页压缩实际上它们以不同的方法压缩数据因此很有必要理解两者的优势所在及它们的工作方式行压缩是真正的压缩为什么数据库引擎会删除列尾未使用的空间呢?当然这是为了节省空间这正是SQL Server在vardecimal压缩中使用的同一技术微软只不过把它扩展到其他数据类型上了

而页压缩使用的是众所皆知的字典压缩它把每页中的数据标准化之后并保留一个查找指针这也是Oracle Database g所使用的技术只不过Oracle称之为Oracle高级压缩在此我们无须对两种压缩方式了解过多但必须知道SQL Server的页压缩包括了更低级的行压缩换句话来说如果你打开了页压缩就自动打开了行压缩

在SQL Server 微软已经包含了几个存储过程以方便你在开始压缩之前就可以估计使用哪种压缩方法之后两者的节省水平以及解压数据库之后数据将会扩展到多大这是一个非常重要且体贴的功能因为你不仅需要了解是否值得花时间压缩而且还要知道磁盘是否处理得了还原后未压缩的数据但要紧记的是这些存储过程是基于小范围的统计上的随机数据采样如果碰巧遇到一个数据上的采样失误那么就会得到错误的估计结果

另外微软实现压缩的方法节约的不仅仅是存储资源数据还可以在内存中保持压缩状态只在读取时才解压这意味着你可以把更多的数据页装入内存中由此减少磁盘读取次数而CPU用于解压的时间也远远少于磁盘寻道的时间

稀疏列允许你存储空值而无须占用物理空间如果在一张巨大的表中列有许多空值可能会浪费大量的磁盘空间来跟蹤这些空值而把空值存储在稀疏列中则不会占用任何空间存储需求也会随之降低

在使用稀疏列时要非常留意一点它们与压缩不兼容坦白地说这是微软的一大失误希望本着为用户着想的原则在某个Service Pack中就能更正这个问题而不是要等到下个版本同时如果你在表中也定义了稀疏列那么也不要指望会压缩表中的数据真是不知道微软是怎么搞的这些本不应该出现在正式产品中的如果非要说稀疏列与压缩他俩是一对完美的组合如花可能也配得上金城武了

压缩索引还像码事至少名符其实这又是节省存储空间的另一个方法过滤索引可以在索引上放置一个where子句(如某条查询)以便只有表的一部分被索引听上去似乎不太妥当但在某些情况下你可能就会想要过滤某些索引了举个例子来说在使用稀疏列时有了过滤索引就无须保持一个包含了主要是空值的索引你可在稀疏列上放置一条索引只取那些非空值就行了这样做以后只有那些带有实际值的行会被索引而索引的体积也会相应大幅减小

工作负荷是好还是差?

Resource Governor是微软在SQL Server中真正对资源管理的一次尝试老实讲根本就比不上Oracle但仍是一个好的开始SQL Server 允许你在内存和CPU中定义资源限制但在重负荷工作情况下仍然差强人意

微软对此的回应是Resource Governor不是旨在满足重负荷工作要求在这第一个版本中目标仅是管控工作负荷中的那些资源以防止它们变成进程当然了这仍未解决过度占用磁盘或处理器时间的问题在SQL Server 如果一个进程开始占用过多的资源那么也没有办法自动把它挪到一个定义好的Resource Governor中也就是说一个进程要么在资源上受Resource Governor管控要么就不受控

其实这个特性最大的受益者是OLTP(在线交易或联机事务处理)系统其只会产生一些轻量级的数据如果不想它占用过多服务器资源可把查询进程放入它们自己的Resource Governor中以管控资源使用量使服务器的大部分功率都用于OLTP负载赚取真正的真金白银

CDC(Change Data Capture改变数据采集)是一个非常好的功能我想对那些整日与ETL(取出转换加载)处理扭打的数据库管理员来说它会非常受欢迎CDC允许SQL Server在定义的列中捕捉到哪些行列已改变并把变化的结果放入到一张可被ETL查询的单独的表中好处显而易见对哪些行被插入删除或更新就不再需要广泛地进行查询了当前来说在一张表中发现这些操作并不容易经常还需要编写代码才能找出来但有了CDC之后你就可在数据库级别上定义这些审计策略不用修改程序代码一边看报纸喝茶去啰

SQL Server 还带来了基于策略的管理(PBM)其是一种可为任何事件定义策略(规则)的方法可在服务器超出策略时要么强制执行要么发出警报你几乎可在策略中定义任何事情甚至像表名不能以tbl打头这样的策略也可以强制执行还可以定义如所有数据库都应每天备份如果某台服务器缺少备份应发出警报PBM正成为SQL Server发展中一个非常强大的工具至少我也非常喜欢它

SQL Server 的闪光之处

SQL Server 带来了太多的新功能片言之间难以表述笔者甚至都还没有试一下完全重写后的SQL Server Reporting Services或体验一下SQL Server Integration ServicesSQL Server Analysis Services中的全部功能还有新的数据仓库交互式Dundas向下搜索报告IntelliSense(智能感知)新的活动监视器集成PowerShell等等

对多数大型企业来说我认为SQL Server 最大的亮点在于数据压缩及CDC因为两者都会影响到企业的预算Resource Governor是一个非常好的功能但目前它还比较稚嫩局限太多还未达到微软期望的水平相信再经过几个版本它定会不负众望

压缩及过滤索引这次想必给大家带来了不一样的感觉虽然过滤索引存在上面提到的一些小问题但如果你把它们用对地方也能看到所期望的性能提升另外在其他工具方面也有了一些重大的改进但对数据库管理员来说他们可能要失望了因为这些改进都是针对开发人员的

上一篇:实例讲解如何返回网络中的SQL Server列表

下一篇:解密SQL Server数据库系统的编译