SQL Server 2008行数据和页数据压缩解密
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行数据和页数据压缩解密相关推荐
- SQL Server 2008将数据导出为脚本 [SQL Server]
之前我们要将一个表中的数据导出为脚本,那么只有在网上找一个导出数据的Script,然后运行就可以导出数据脚本了.现在在SQL Server 2008的Management Studio中增加了一个新特 ...
- SQL SERVER 2008 误删数据且无全备恢复方法
原文:http://www.jb51.net/article/84932.htm SQL Server中误删除数据的恢复本来不是件难事,从事务日志恢复即可.但是,这个恢复需要有两个前提条件: 1. 至 ...
- SQL Server 2008将数据导出到SQL脚本文件
1. 简介 在SQL Server Management Studio 2005 中(包括之前SQL Server 2000 的企业管理器),只能把表结构导出到SQL脚本文件中,没办法把数据导出到SQ ...
- SQL Server 2008分区表数据归档
分区表中的历史数据进行归档,主要涉及以下5个步骤,代码中的tbl_source为分区表,staging_work为归档工作表 创建归档表 归档表需要与源表结构保持一致,具有相同的索引 归档表与源表位于 ...
- sqlserver200864位下载_sqlserver2008 64位|sql server 2008 R2 64位企业版下载 - 121下载站
sql server 2008 R2 64位企业版是微软官方发布的64位版本,支持win7.win8等操作系统.sql server 2008 R2是最新版本的数据库软件,可以有效地提升企业内部数据库 ...
- 《Microsoft Sql server 2008 Internal》读书笔记--第七章Special Storage(3)
<Microsoft Sql server 2008 Interna>读书笔记订阅地址: http://www.cnblogs.com/downmoon/category/230397.h ...
- SQL Server 2008 - 第2章 创建、管理 数据库
第2章 创建数据库 数据库是用来存储数据的空间,它作为存储结构的最高层次是其他一切数据库操作的基础.用户可以通过创建数据库来存储不同类别或者形式的数据. 因此,在本章用户将详细地学习针对数据库的基本 ...
- SQL Server 2008创建数据库
创建数据库就是为数据库确定名称.大小.存放位置.文件名和所在文件组的过程.在一个SQL Server 2008实例中,最多可以创建32767个数据库,数据库的名称必须满足系统的标识符规则.在命名数据库 ...
- 是时候挥别 SQL Server 2008 了
微软 宣布将于 2019 年 7 月终止对 SQL Server 2008 和 2008 R2 的支持,使用 SQL Server 2008 的公司应该认真开始考虑下一步了.本文引用了一家数字化转型咨 ...
最新文章
- python3.6.4安装教程-Python3.6.4官方版
- NSIS 的 Modern UI 教程(二)
- BZOJ4855 : [Jsoi2016]轻重路径
- 简述数据字典的结构及其作用_数据结构——树基本概念及其遍历
- php session修改时间,PHP如何修改SESSION有效时间?
- 一键生成Vue.js + Web API前后端集成项目
- 监控视图 oracle,Oracle“并行执行”之四——监控视图
- 一种RTP接收和解包的程序
- Kibana插件sentinl使用教程
- 『nForce主板』巧妙去掉“安全删除硬盘”图标!
- 基于matlab的图像复原,MATLAB在图像复原中的应用
- android为APK新建SELINUX权限域seapp_contexts
- [转]经典JavaScript正则表达式
- 二、JavaScript 基础(上) - 章节课后练习题及答案
- 打印九九乘法表的两种方法:
- qrcodejs生成二维码图片
- python 仪表盘数据显示_Python制作仪表盘图,比Excel快速百倍
- 2020.4.22课堂笔记(继承、多态、抽象类、抽象方法)
- 如何获得的office 365 年卡
- 兔子机器人Blossom成为萌宠,软体机器人将会是设计新方向?
热门文章
- Eclipse启动时DDMS files not found: D:\Eclipse\adt-bundle-windows-x86_64-20131030\sdk\tool
- php session already send by ……
- FreeBSD从零开始---Web服务器搭建(一)
- 如何手动生成Dump文件并分析Dump文件
- Could not GET “XXXXX.xml”Received status code 400
- LINUX文件、目录权限及相关操作命令
- py02-python基础
- 修改机器名、IP对arcgis server、portal的影响?
- Linux diff命令
- Java记录 -61- 比较器Comparator