王朝网络
分享
 
 
 

探密微软SQL Server 2008中新压缩特性

王朝学院·作者佚名  2009-12-09  
宽屏版  字体: |||超大  

导语:SQLServer2005SP2为我们带来了vardecimal功能,这项功能使得原来定长的decimal数据在数据文件中以可变长的格式存储,据称这项功能可为数据仓库节省空间,而SQLServer2008在这基础上增强了数据压缩功能。

SQLServer中的数据压缩功能,最早是从SQLServer2005开始,在企业版和开发版中增加了一种叫做vardecimal的新存储格式,这通过该功能应用可以影响到decimal和numeric字段。如果数据库里的表含有decimal和numeric类型数据,用户就可以使用vardecimal存储格式来缩小数据库的大小。值得注意的是,能够节省出多少空间取决于数据库中含有多少decimal或numeric数据列、数据分布情况以及表的大小。

使用数据压缩

而正是这个数据压缩功能,成为SQLServer2008中又一新特性:数据压缩,利用该特性,可以减小数据表,索引以及分区的子集的大小。但是这个之前在SQLServer2005存在的功能,为何要在新一代版本系统中改进,存储成本不断降低的市场环境下,数据压缩技术能给企业何种好处?

尽管存储成本已经不再是企业关注的敏感因素,但是这并不代表数据库尺寸不会对企业运营中效率有影响,因为数据库尺寸除了会影响到存储成本之外,还极大地关联到管理成本和性能问题。

首先,因为数据库需要备份,数据库的尺寸越大,那么备份时间就会越长,同时消耗的备份硬件成本提升,还有一种管理成本就是数据库的维护成本。从性能方面,SQLServer在扫描磁盘读取数据的时候都是按照数据页为单位进行读取的,因此如果一张数据页中包含的数据行数越多,SQLServer在一次数据页IO中获得的数据就会越多,这样也就带来了性能的提升。

相对于SQL Server2005SP2中vardecimal的压缩数据,SQLServer2008当前放出的测试数据,采用新的数据压缩技术可以达到更高的存储率,再加上企业对于容灾而增加的存储空间,所有的这些都是SQLServer2008中这一新特性有利一面。

第2页:两种压缩模式

了解压缩数据真正好处之后,可以感受到概念的渗透,借助数据压缩,减少了存储成本,并提高查询性能,减少I/O和增加缓冲点击率。可见,这一个功能在应用过程中还是十分有效果的,SQLServer2008中的数据压缩有两种应用方式,即行压缩和页压缩,下面对这两种数据压缩类型简单做个对比。

数据压缩向导过程中选择压缩类型

行压缩。行压缩可以将固定长度类型存储为可变长度存储类型。例如char(100)列储存在一个可变长度存储格式将只使用了存储量所定义的数据。储存的“SQLServer2008”,压缩后只需要存放15个字符,而非全部100个字符,从而节省了85%的存储空间。这是在SQLServer2005ServicePack2中提供的vardecimal存储格式的思路的延伸。同时需要注意的是,这种压缩模式,将对所有数据类型的NULL和0值进行优化,从而使它们不占用任何字节。

尽管SQLServer2008数据压缩扩展了这个功能,对所有固定长度的数据类型都进行了处理,包括integer、char和float。现在数据不是以固定大小的字节进行存储,而是用最小所需的字节,只需要启用行压缩功能就可以执行。但是,行压缩无法处理XML、BLOB和MAX数据类型。

页面压缩模式。这种压缩功能,建立在行压缩基础之上,通过只存储一次页面上相同事件字节来将存储的冗余数据减到最小。使用页压缩压缩表和索引,除了采用行压缩,还采用了前缀压缩和字典压缩。

数据压缩会减少的大小您的表格或索引指标,最好是先评估一下压缩后所能节省的空间。每一个页都是单独压缩的,前缀和字典也存储在页内。由于页是存储分配的原子单位,将半页压缩到四分之一页是没有任何意义的,所以,只有在页的内容快满的时候才会开始压缩处理。

在使用行和页压缩时还有一个性能权衡问题,因为CPU使用率会上升,但I/O使用率和内存占用会下降。但这所有的压缩选项可能成为SQLServer2008企业版专享选项。

第3页:如何使用数据压缩

附录(如何使用数据压缩):

(1)启用行压缩

如果我们要在指定的表上启用行压缩,可执行以下语句:

CREATE TABLE Alpha(col1 int,col2 char(1000))

WITH (DATA_COMPRESSION = ROW)

(2)启用页压缩

如果我们要在指定的分区上启用压缩,可执行以下语句:

CREATE TABLE Alpha_Partition(col1 int,col2 char(1000))

ON PartitionScheme(col 1)

WITH

(DATA_COMPRESSION = PAGE ON)

PARTITIONS(1-3)

(3)修改压缩

如果要把一个现有的索引修改为使用压缩,可执行以下语句:

ALTER INDEX Collndx ON Alpha REBUILD

WITH (DATA_C0MPRESSION=PAGE)

ALTER INDEX Collndx ON Alpha REBUILD

partition = 2

WITH (DATA_COMPRESSION=PAGE)

SQL Server 2008中的压缩选项可以在创建表或索引时通过Option进行设置,例如:

CREATE TABLE TestTable (col1 int,col2varchar(200))WITH(DATA_COMPRESSION = ROW);

如果需要改变一个分区的压缩选项,则可以用以下语句:

ALTER TABLE TestTable REBUILD PARTITION = 1 WITH(DATACOMPRESSION=PAGE);

如果需要为分区表的各个分区设置不同的压缩选项,可以使用以下的语句:(SQLServer2008可以对不同的分区使用不同的压缩选项,这一点对于数据仓库应用是非常重要的,因为数据仓库的事实表通常都会有一个或数个热分区,这些分区中的数据经常需要更新,为了避免数据压缩给这些分区上的数据更新带来额外的处理载荷,可以对这些分区关闭压缩选项)

CREATE TABLE PartitionedTable (col1 int, col2varchar(200))

ON PS1 (col1)

WITH (DATA_COMPRESSION = ROW ON PARTITIONS(1),

DATA_COMPRESSION = PAGE ON PARTITION(2 TO 4));

如果是为某个索引设置压缩选项的话,可以使用:

CREATE INDEX IX_TestTable_Col1 ONTestTable(Col1)WITH(DATA_COMPRESSION = ROW);

如果是修改某个索引的压缩选项,可以使用:

ALTER INDEX IX_TestTable_Col1 ONTestTableREBUILDWITH(DATA_COMPRESSION = ROW);

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
>>返回首页<<
推荐阅读
 
 
频道精选
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有