SQL Server的性能主要取决于磁盘I/O效率,提高I/O效率某种程序上就意味着提高性能。SQL Server 2008提供了数据压缩功能来提高磁盘I/O。

数据压缩意味着减小数据的有磁盘占用量,所以数据压缩可以用在表,聚集索引,非聚集索引,视图索引或是分区表,分区索引上。

数据压缩可以在两个级别上实现:行级别和页级别。页级别压缩包括行级别压缩。表和索引在创建的同时就可以压缩,也可以使用Alter Table Rebuild With 或是 Alter Index Rebuild With语法压缩已存在表或是索引。当堆(Heap)上的压缩状态改变时,所有的非聚集索引也会重建。

下面让我们看看压缩过程到底都做了些什么。

行压缩:

  • 1.减少元数据头记录数据。
  • 2.所有的数值类型(integer,decimal,float)或基于数值类型的类型都会被压缩(datetime,money)。比如,100被存在一个int型字段中,占4位,但是从0~255只需要1位,压缩后,就节省了3byte空间。
  • 3.Char和NChar都被存放于可变长度的类型中。原因同上。比如,CSDN被存在Char(10)中,但是它只需要Char(4)空间,所以压缩后就释放了Char(6)个空间。
  • 4.所有类型的NULL和0都不占字节了。

页压缩:

  • 1.进行行压缩。
  • 2.前标压缩:每一页中的所有列,在行标头下面,每行都存储着一个行定义值,压缩后,所有行的定义值都被替换成行头值的引用。
  • 3.字典压缩:字典压缩和前标压缩类似。前标压缩中,一个与其他普通值不同的值被定义到每一列上。但是字典压缩中,每一页中所有列的普通值被存在下一行的行头前面。然后,这些值被替换成新行的引用值。

下面我们来看一个例子:

USE tempdb
GO
CREATE TABLE TestCompression (col1 INT, col2 CHAR(50))
GO
INSERT INTO TestCompression VALUES (10, 'compression testing')
GO 5000
-- Original
EXEC sp_spaceused TestCompression
GO
-- DATA_COMPRESSION = ROW
ALTER TABLE TestCompression
REBUILD WITH (DATA_COMPRESSION = ROW);
GO
EXEC sp_spaceused TestCompression
GO
-- DATA_COMPRESSION = PAGE
ALTER TABLE TestCompression
REBUILD WITH (DATA_COMPRESSION = PAGE);
GO
EXEC sp_spaceused TestCompression
GO
-- DATA_COMPRESSION = NONE
ALTER TABLE TestCompression
REBUILD WITH (DATA_COMPRESSION = NONE);
GO
EXEC sp_spaceused TestCompression
GO

转载于:https://www.cnblogs.com/qxoffice2008/p/4130691.html

SQL Server 2008行数据和页数据压缩解密相关推荐

  1. SQL Server 2008将数据导出为脚本 [SQL Server]

    之前我们要将一个表中的数据导出为脚本,那么只有在网上找一个导出数据的Script,然后运行就可以导出数据脚本了.现在在SQL Server 2008的Management Studio中增加了一个新特 ...

  2. SQL SERVER 2008 误删数据且无全备恢复方法

    原文:http://www.jb51.net/article/84932.htm SQL Server中误删除数据的恢复本来不是件难事,从事务日志恢复即可.但是,这个恢复需要有两个前提条件: 1. 至 ...

  3. SQL Server 2008将数据导出到SQL脚本文件

    1. 简介 在SQL Server Management Studio 2005 中(包括之前SQL Server 2000 的企业管理器),只能把表结构导出到SQL脚本文件中,没办法把数据导出到SQ ...

  4. SQL Server 2008分区表数据归档

    分区表中的历史数据进行归档,主要涉及以下5个步骤,代码中的tbl_source为分区表,staging_work为归档工作表 创建归档表 归档表需要与源表结构保持一致,具有相同的索引 归档表与源表位于 ...

  5. sqlserver200864位下载_sqlserver2008 64位|sql server 2008 R2 64位企业版下载 - 121下载站

    sql server 2008 R2 64位企业版是微软官方发布的64位版本,支持win7.win8等操作系统.sql server 2008 R2是最新版本的数据库软件,可以有效地提升企业内部数据库 ...

  6. 《Microsoft Sql server 2008 Internal》读书笔记--第七章Special Storage(3)

    <Microsoft Sql server 2008 Interna>读书笔记订阅地址: http://www.cnblogs.com/downmoon/category/230397.h ...

  7. SQL Server 2008 - 第2章 创建、管理 数据库

    第2章  创建数据库 数据库是用来存储数据的空间,它作为存储结构的最高层次是其他一切数据库操作的基础.用户可以通过创建数据库来存储不同类别或者形式的数据. 因此,在本章用户将详细地学习针对数据库的基本 ...

  8. SQL Server 2008创建数据库

    创建数据库就是为数据库确定名称.大小.存放位置.文件名和所在文件组的过程.在一个SQL Server 2008实例中,最多可以创建32767个数据库,数据库的名称必须满足系统的标识符规则.在命名数据库 ...

  9. 是时候挥别 SQL Server 2008 了

    微软 宣布将于 2019 年 7 月终止对 SQL Server 2008 和 2008 R2 的支持,使用 SQL Server 2008 的公司应该认真开始考虑下一步了.本文引用了一家数字化转型咨 ...

最新文章

  1. python3.6.4安装教程-Python3.6.4官方版
  2. NSIS 的 Modern UI 教程(二)
  3. BZOJ4855 : [Jsoi2016]轻重路径
  4. 简述数据字典的结构及其作用_数据结构——树基本概念及其遍历
  5. php session修改时间,PHP如何修改SESSION有效时间?
  6. 一键生成Vue.js + Web API前后端集成项目
  7. 监控视图 oracle,Oracle“并行执行”之四——监控视图
  8. 一种RTP接收和解包的程序
  9. Kibana插件sentinl使用教程
  10. 『nForce主板』巧妙去掉“安全删除硬盘”图标!
  11. 基于matlab的图像复原,MATLAB在图像复原中的应用
  12. android为APK新建SELINUX权限域seapp_contexts
  13. [转]经典JavaScript正则表达式
  14. 二、JavaScript 基础(上) - 章节课后练习题及答案
  15. 打印九九乘法表的两种方法:
  16. qrcodejs生成二维码图片
  17. python 仪表盘数据显示_Python制作仪表盘图,比Excel快速百倍
  18. 2020.4.22课堂笔记(继承、多态、抽象类、抽象方法)
  19. 如何获得的office 365 年卡
  20. 兔子机器人Blossom成为萌宠,软体机器人将会是设计新方向?

热门文章

  1. Eclipse启动时DDMS files not found: D:\Eclipse\adt-bundle-windows-x86_64-20131030\sdk\tool
  2. php session already send by ……
  3. FreeBSD从零开始---Web服务器搭建(一)
  4. 如何手动生成Dump文件并分析Dump文件
  5. Could not GET “XXXXX.xml”Received status code 400
  6. LINUX文件、目录权限及相关操作命令
  7. py02-python基础
  8. 修改机器名、IP对arcgis server、portal的影响?
  9. Linux diff命令
  10. Java记录 -61- 比较器Comparator