• SQL Server教程 - SQL Server 压缩(Compression)


    更新记录
    转载请注明出处:https://www.cnblogs.com/cqpanda/p/16556436.html
    2022年8月7日 发布。
    2022年8月6日 从笔记迁移到博客。

    SQL Server 压缩(Compression)

    使用压缩的原因

    减少磁盘空间

    改善性能

    缩短查询的请求时间

    注意:只有SQL Server企业版才支持压缩

    不使用压缩的原因

    如果保存在内存中的数据是压缩的,选中该数据,必须先解压缩在操作

    如何使用压缩

    频繁更新的数据应使用行压缩

    频繁插入新数据到表尾的表应使用页压缩

    只是进行读取操作的数据应使用页压缩

    与压缩比例关联的因素

    数据类型

    image

    数据特点

    比如数据表的索引、数据表的类型

    SQL Server支持以下级别压缩

    堆表(未建立聚集索引的表)

    带有聚集索引的表

    非聚集索引

    索引视图

    分区

    压缩说明

    行压缩说明

    压缩将改变数据的物理存储,但不改变数据的逻辑结构

    行压缩的过程:

    ​ 识别每一列的数据类型,转为可变长度

    最后将存储空间的请求量减少的到实际需求

    压缩后,增加了每一页上的存储数据量

    压缩后,减少元数据量

    比如:某一列的数据类型是smallint,默认状态下系统分配2个字节

    但实际中,只是用了1个字节的空间,如果在表上启用压缩,就可以进行按需分配

    页压缩说明

    页压缩执行额外的操作来增强行压缩

    主要操作:行压缩、前缀压缩、字典压缩

    启用表或索引压缩(行、页)-使用SSMS

    进入表后,选择存储image

    点击【下一步】image

    勾选【对所有分区进行压缩】,选择【Row】image

    按需求选择你需要的方案image

    启用非聚集索引压缩(行、页)-使用SSMS

    选中指定的索引,进入压缩页面image

    勾选指定的参数image

    选择你需要的方案image

    创建表时启用表压缩-使用T-SQL

    1. CREATE TABLE [表名]
    2. (
    3. )
    4. WITH (DATA_COMPRESSION = ROW);

    修改表使表启用表压缩-使用T-SQL

    1. ALTER TABLE [表名]
    2. REBUILD WITH(DATA_COMPRESSION = ROW);

    修改表启用索引压缩(行)-使用T-SQL

    1. ALTER INDEX 索引名
    2. ON [表名]
    3. REBUILD WITH(DATA_COMPRESSION = ROW);

    实例:

    1. USE PandaDatabase;
    2. GO
    3. ALTER INDEX PK__PandaTab__3214EC07FAF090D4
    4. ON [PandaTable]
    5. REBUILD WITH(DATA_COMPRESSION = ROW);

    创建表时启用页压缩-使用T-SQL

    1. CREATE TABLE [表名]
    2. (
    3. )
    4. WITH (DATA_COMPRESSION = PAGE);

    修改表时启用页压缩-使用T-SQL

    1. ALTER TABLE [PandaTable3]
    2. REBUILD WITH (DATA_COMPRESSION = PAGE);

    修改表启用索引压缩(页)-使用T-SQL

    1. ALTER INDEX [索引名]
    2. ON [表名]
    3. REBUILD (DATA_COMPRESSION = PAGE);

    查看压缩效果-使用-SSMS

    进入指定的表或索引 的压缩页面image

    选定具体参数后,点击【计算】image

    查看压缩效果-使用T-SQL

    1. EXEC sp_estimate_data_compression_savings
    2. @schema_name = '',
    3. #object_name = '',
    4. @index_id = 1,
    5. @partition_number = NULL,
    6. @data_compression = 'row'

    实例:

    1. EXEC sp_estimate_data_compression_savings
    2. @schema_name = 'dbo',
    3. @object_name = PandaTable,
    4. @index_id = 1,
    5. @partition_number = NULL,
    6. @data_compression = 'row'
  • 相关阅读:
    ANSVC无功补偿装置助力江苏某环保能源项目
    【UV打印机】理光喷头组合说明(16H)
    数据结构——线性表的顺序表示和实现
    x86和arm框架下的centOS
    PowerDesigner的表设计显示Comment的配置操作场景
    如何将硬盘分区合并不丢失数据,合并两个硬盘分区不删除数据
    实测:游戏情景中,远控软件实力如何?一篇告诉你ToDesk的强大之处
    《吐血整理》高级系列教程-吃透Fiddler抓包教程(24)-Fiddler如何优雅地在正式和测试环境之间来回切换-中篇
    蓝桥杯每日一题2023.10.3
    【21天算法学习】直接选择排序
  • 原文地址:https://blog.csdn.net/weixin_38304160/article/details/126205834