首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >优化SqlServer–数据压缩

优化SqlServer–数据压缩

作者头像
全栈程序员站长
发布2022-07-11 17:58:33
发布2022-07-11 17:58:33
1.1K0
举报

数据压缩是对存储和性能优势的加强。减少数据库占用的磁盘空间量将减少整体数据文件存储空间,在一下几个方面增加吞吐量:

1.更好的I/O利用率,每个页面可以读写更多的数据。

2.更好的内存利用率,缓冲区可以缓存更多的数据。

3.减少页面的闭锁,每个页面可以包含更多数据。

由于数据压缩必须考虑I/O 和CPU之间的平衡,压缩和解压缩都需要CPU处理。因此数据压缩对于旧数据和不经常查询的数据更有意义。

这里我们主讨论两种压缩:一是行压缩;二是页面压缩。

行压缩:压缩可以改变格式的存储固定值数据类型–也就说包含一个字节的值的4字节列可以压缩为1字节,1字节的列不能再压缩,但是null和0值不占字节。

语法: 创建 create table 表名()with (DATA_COMPERSSION=ROW)

添加 ALTER TABLE 表名 REBUILD with (DATA_COMPERSSION=ROW)

页面压缩:页面压缩在实现行压缩的前提下,还实现了两种压缩,一是前缀压缩(对于每个页面和列来说前缀值都是相同的,可用来减少存储的需求,通过引用来取代重复的前缀);二是字典压缩(搜索页面中的重复值,这被对CI的引用取代)。

语法: 创建 create table 表名()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=] –压缩类型(none\row\page)

[;]

监控数据压缩:windows性能监视的sqlserver:access method 对象中有两个计数器:

Page compression attempts/sec:计算每秒进行页面压缩尝试的次数;

Pages compressed/sec:计算每秒压缩的页面数。

最后还要注意数据压缩的注意事项:

1.启用和禁用表或群集索引压缩会重构所有费群集索引。

2.不能在稀疏列中使用压缩。

3.超出行的LOB 不能压缩。

4.索引中的非叶子也只能使用行压缩进行压缩。

5.非群集索引不继承标的压缩设置。

6.再删除群集索引时,表将保持这些压缩设置。

7.除非特别指定,创建群集索引将继承表的压缩设置。

总结: 我们已经了解了基本的使用方式和一些注意事项,通过压缩实现高性能的数据库系统。同时我们还要兼顾一些硬件成本,最后我们还要注意的是对于高可用性系统,改变压缩设置可能会产生额外的事务日志操作。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/119745.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021年11月,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档