优化SqlServer--数据压缩
数据压缩是对存储和性能优势的加强。减少数据库占用的磁盘空间量将减少整体数据文件存储空间,在一下几个方面增加吞吐量: 1.更好的I/O利用率,每个页面可以读写更多的数据。 2.更好的内存利用率,缓冲区可以缓存更多的数据。 3.减少页面的闭锁,每个页面可以包含更多数据。 由于数据压缩必须考虑I/O和CPU之间的平衡,压缩和解压缩都需要CPU处理。因此数据压缩对于旧数据和不经常查询的数据更有意义。 这里我们主讨论两种压缩:一是行压缩;二是页面压缩。 行压缩:压缩可以改变格式的存储固定值数据类型--也就说包含一个字节的值的4字节列可以压缩为1字节,1字节的列不能再压缩,但是null和0值不占字节。 语法:创建 createtable表名()with(DATA_COMPERSSION=ROW) 添加 ALTER TABLE表名REBUILD with(DATA_COMPERSSION=ROW) 页面压缩:页面压缩在实现行压缩的前提下,还实现了两种压缩,一是前缀压缩(对于每个页面和列来说前缀值都是相同的,可用来减少存储的需求,通过引用来取代重复的前缀);二是字典压缩(搜索页面中的重复值,这被对CI的引用取代)。 语法:创建 createtable表名()with(DATA_COMPERSSION=PAGE) 添加 ALTER TABLE表名REBUILD with(DATA_COMPERSSION=PAGE) 估计节省空间:语法sp_estimate_data_compression_savings [@schema_name=]--架构名称 , [@object_name=]--有索引的表或者索引视图的名称。 , [@index_name=]--索引ID号 , [@partition_number=]--对象分区号,null表示非分区 , [@data_compression=]--压缩类型(nonerowpage) [;] 监控数据压缩:windows性能监视的sqlserver:access method对象中有两个计数器: Page compression attempts/sec:计算每秒进行页面压缩尝试的次数; Pages compressed/sec:计算每秒压缩的页面数。 最后还要注意数据压缩的注意事项: 1.启用和禁用表或群集索引压缩会重构所有费群集索引。 2.不能在稀疏列中使用压缩。 3.超出行的LOB不能压缩。 4.索引中的非叶子也只能使用行压缩进行压缩。 5.非群集索引不继承标的压缩设置。 6.再删除群集索引时,表将保持这些压缩设置。 7.除非特别指定,创建群集索引将继承表的压缩设置。 总结:我们已经了解了基本的使用方式和一些注意事项,通过压缩实现高性能的数据库系统。同时我们还要兼顾一些硬件成本,最后我们还要注意的是对于高可用性系统,改变压缩设置可能会产生额外的事务日志操作。
(编辑:4S站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |