SQL Server 2008行数据和页数据压缩解密
来源:互联网 发布:python index函数 编辑:程序博客网 时间:2024/05/19 10:53
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
- SQL Server 2008行数据和页数据压缩解密
- SQL Server 2008行数据和页数据压缩解密
- SQL SERVER单页数据存储行数计算
- SQL Server 2008 插入多行数据
- SQL Server 2008 索引之十亿行数据测试报告
- sql server数据库insert多行数据
- 分页存储过程(Sql Server) (表名、当前页索引、每页显示行数,则返回 数据集和总页数)
- SQL SERVER 取重复值和取某列第N大值得行数据的 SQL语句
- 查询sql server 2008所有表和行数
- SQL Server 中利用STUFF和FOR XML PATH()实现多行数据的拼接
- SQL SERVER 2008 笔记之行压缩和页压缩
- SQL SERVER 2008 笔记之行压缩和页压缩
- SQL Server 2008 压缩
- SQL Server 2008 压缩
- SQL Server中将多行数据拼接为一个字符串
- SQL Server 查询结果多行数据拼接
- SQL Server 2008 学习笔记【一】 一次性插入多行数据的问题
- SQL Server存储过程加密和解密
- javascript获取网页高度与宽度
- 自己写的整数和字符串之间的转化
- 用美好的心灵看世界
- SQL通配符及模式匹配
- vc60.pdb” is missing debugging information for referencing module 错误
- SQL Server 2008行数据和页数据压缩解密
- 非关系型数据库“NoSql”之Apache Cassandra
- 一道TCL的笔试题---递归
- Android 应用程序之间数据共享—ContentResolver
- javascript控制div信息居中
- 按钮
- VFW视频采集详细介绍
- dib.cpp&dib.h
- 读《C++编程规范》