优化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)
上一篇 2021年11月25日 上午10:00
下一篇 2021年11月25日 上午10:00


相关推荐

  • JSP的四种作用域与九大内置对象

    JSP的四种作用域与九大内置对象JSP的四种作用域与九大内置对象

    2022年4月22日
    55
  • 区块链钱包_区块链钱包的作用

    区块链钱包_区块链钱包的作用什么是区块链钱包 在介绍区块链钱包之前,我们先详细介绍下比特币的地址生成过程。大的流程是:私钥–》公钥–》地址。先啰嗦一点计算机知识:位,字节,字,KB,MB 位:“位(bit)”是电子计算机中最小的数据单位。每一位的状态只能是0或1。 字节:8个二进制位构成1个“字节(Byte)”,它是存储空间的基本计量单位。1个字节用16进制来表示是两个字符,比如1011…

    2022年10月21日
    4
  • java高级面试题及答案

    java高级面试题及答案前言Linux网络协议栈是根据TCP/IP模型来实现的,TCP/IP模型由应用层、传输层、网络层和网络接口层,共四层组成,每一层都有各自的职责。应用程序要发送数据包时,通常是通过socket接口,于是就会发生系统调用,把应用层的数据拷贝到内核里的socket层,接着由网络协议栈从上到下逐层处理后,最后才会送到网卡发送出去。而对于接收网络包时,同样也要经过网络协议逐层处理,不过处理的方向与发送数据时是相反的,也就是从下到上的逐层处理,最后才送到应用程序。网络的速度往往跟用户体验是挂钩

    2022年7月9日
    23
  • 操作系统内存管理(思维导图详解)

    操作系统内存管理(思维导图详解)1 计算机的存储体系内存是计算机很重要的一个资源 因为程序只有被加载到内存中才可以运行 此外 CPU 所需要的指令与数据也都是来自内存的 可以说 内存是影响计算机性能的一个很重要的因素 在介绍内存管理的细节前 先要了解一下分层存储器体系 大部分的计算机都有一个存储器层次结构 即少量的非常快速 昂贵 易变的高速缓存 cache 若干兆字节的中等速度 中等价格 易变的主存储器 RAM

    2026年3月18日
    3
  • Pycharm使用-错误“PermissionError: [Errno 13] Permission denied”排查

    Pycharm使用-错误“PermissionError: [Errno 13] Permission denied”排查文章目录问题说明排查过程问题初始管理员方式使用工具权限设定设置信息总结问题说明近期 Pycharm 运行 python 程序 提示出错信息 PermissionEr Errno13 Permissionde 各种尝试一番 总算是解决了 特此记录下留作备忘 排查过程问题初始相关代码时从 github 上获取的 在安装了相关的引用 package 后 在 Pycharm 中显示代码时正常的 运行相关 python 文件时 在 run 窗口提示错误如下 FileNotFound Errno

    2026年3月27日
    3
  • BetterIntelliJ-1.19 通用激活码【最新永久激活】[通俗易懂]

    (BetterIntelliJ-1.19 通用激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html1TCF2R91JZ-eyJsaWN…

    2022年3月31日
    236

发表回复

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

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