优化SqlServer–数据压缩

优化SqlServer–数据压缩

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

     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.net/119745.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • iphone5s如何省电?耗电费电如何处理?iphone5s耗电费电解决方法

    iphone5s如何省电?耗电费电如何处理?iphone5s耗电费电解决方法

    2021年9月15日
    128
  • 值得收藏:一份非常完整的 MySQL 规范(二)

    值得收藏:一份非常完整的 MySQL 规范(二)

    2022年2月13日
    33
  • JAVA HD japan_电竞小金刚:优派VX2778-hd-PRO

    JAVA HD japan_电竞小金刚:优派VX2778-hd-PRO144Hz一直是游戏爱好者追捧的香饽饽,再配上色彩还原能力极为优秀的IPS面板,那一定是无数玩家心中的梦想。随着面板技术越来越成熟,144Hz的IPS屏的价格渐渐走下神坛,有不少入门级电竞显示器开始配备这种的面板。开箱今天给各位开箱的优派VX2778-hd-PRO就是这样一款产品。左下角IPS144Hz的标识格外显眼。优派的支架是我一直非常喜欢的,…

    2022年7月8日
    50
  • 浅谈一下学Java和python哪个好(个人观点)「建议收藏」

    浅谈一下学Java和python哪个好(个人观点)「建议收藏」其实这是一篇容易引起撕逼的文章,java是一种覆盖范围广,可跨平台的编程语言,python也是近几年火遍全世界的语言。先说结论,java是基础,另外一个是加分项,我仅代表我个人观点,为了祖国和谐,人民安康,请各位看官尽量理性讨论。java和python哪个好?很多朋友碰到了一个很共性的问题,那就是编程语言的选择。虽然Python这两年确实很火,但如果你的学历不是硕士以上,数学能力也一般,就无脑选java,不要选择Python作为就业方向。单单只会Python这门语言的是找不到工作的!Pyth

    2022年7月9日
    20
  • bytebuffer是什么_byte与bit

    bytebuffer是什么_byte与bit一.ByteBuffer   ByteBuffer是JDKNIO中提供的Java.nio.Buffer,在内存中预留指定大小的存储空间来存放临时数据,其他Buffer的子类有:CharBuffer、DoubleBuffer、FloatBuffer、IntBuffer、LongBuffer和ShortBuffer 1.Buffer   ByteBuffer继承…

    2022年9月2日
    2
  • 下面哪几个符号是linux通配符_什么是通配符,有什么作用

    下面哪几个符号是linux通配符_什么是通配符,有什么作用linux通配符含义:.当前目录****..当前目录的上一级目录*****通配符,代表任意0个或多个字符*****?通配符,代表重复0个或一个0前面的字符:连续不同命令的分隔符*****#配置文件注释*****|管道*****~用户的家目录*****-上一次的目录*****$变量前需加的符号/路径分隔符>或1…

    2022年9月19日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号