当前位置:首页 > 系统运维 > 正文内容

浅谈SQL Server 2008中的行压缩

a8116255311年前 (2015-10-16)系统运维11

在创建表或索引,或者修改表或索引时可以启用行压缩特性。压缩可以基于行级、页面级和备份级,本文将举例说明如何创建一个具备行压缩功能的表,以及修改一个表,使其具备行压缩功能。

首先创建一个未开启行压缩功能的表,使用下面的SQL语句往表里插入一些数据:

/****** Object: Table [dbo].[NoNCompressed Table]  Script Date: 05/27/2009 02:24:23 ******/  IF EXIstS (SELECT * FROM sys.objects  WHERE object_id = OBJECT_ID(N'[dbo].[NoNCompressed Table]')  AND type in (N'U'))  DROP TABLE [dbo].[NoNCompressed Table]  go  CREATE TABLE [NoNCompressed Table]  (id int, FName varchar(100), LName varchar(100))  --增加10,000行  declare @n int  set @n=0 while @n<=10000  begin  insert into [NoNCompressed Table] values  (1,'Adam','Smith'),(2,'Maria','carter'),(3,'Walter','zenegger')  set @n=@n+1  end  GO 

然后使用下面的SQL语句查询这个表占用的空间大小:

EXEC sp_spaceused [NONCompressed Table] 

返回结果:

name,rows,reserved,data,index_size,unused  NoNCompressed Table,30003 ,968 KB,944 KB,8 KB,16 KB 

现在我们创建一个启用了行压缩的表,使用下面的SQL语句插入相同数量的数据:

/****** Object: Table [dbo].[Compressed Table]  Script Date: 05/27/2009 02:24:57 ******/  IF EXISTS (SELECT * FROM sys.objects  WHERE object_id = OBJECT_ID(N'[dbo].[Compressed Table]')  AND type in (N'U'))  DROP TABLE [dbo].[Compressed Table]  GO  CREATE TABLE [Compressed Table]  (id int, FName varchar(100), LName varchar(100)) with  (Data_compression = ROW)  declare @n int  set @n=0 --添加10,000行  while @n<=10000  begin  insert into [Compressed Table] values  (1,'Adam','Smith'),(2,'Maria','carter'),(3,'Walter','zenegger')  set @n=@n+1  end  GO 

使用下面的SQL语句查询表的空间占用情况:

EXEC sp_spaceused [Compressed Table]

返回结果:

name,rows,reserved,data,index_size,unused

Compressed Table,30003 ,584 KB,576 KB,8 KB,0 KB

结果显示压缩表比非压缩表占用的空间小得多。

有一种情况是表中已经有很多数据,但现在需要进行压缩,该怎么办呢 在这种情况下,可以ALTER TABLE语句增加数据压缩功能,我们创建另一个未启用压缩功能的表来模拟一下,使用下面的SQL语句添加数据到表中:

/****** Object: Table [dbo].[NoNCompressed Table] Script Date: 05/27/2009 02:24:23 ******/  IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[NoNCompressed Table2]') AND type in (N'U'))  DROP TABLE [dbo].[NoNCompressed Table2]  GO  CREATE TABLE [NoNCompressed Table2]  (id int, FName varchar(100), LName varchar(100))  declare @n int  set @n=0 while @n<=10000  begin  insert into [NoNCompressed Table2] values  (1,'Adam','Smith'),(2,'Maria','carter'),(3,'Walter','zenegger')  set @n=@n+1  end  GO 

使用下面的SQL语句查询该表占用的空间大小:

EXEC sp_spaceused [NONCompressed Table2] 

返回结果:

name,rows,reserved,data,index_size,unused  NoNCompressed Table,30003 ,968 KB,944 KB,8 KB,16 KB 

使用下面的ALTER TABLE语句启用表的压缩功能:

ALTER TABLE [NoNCompressed Table2]  REBUILD WITH (DATA_COMPRESSION = ROW ); 

然后使用下面的SQL语句查询表的空间占用情况:

EXEC sp_spaceused [NONCompressed Table2] 

返回结果:

name,rows,reserved,data,index_size,unused

NoNCompressed Table2,30003 ,592 KB,560 KB,8 KB,24 KB

扫描二维码推送至手机访问。

版权声明:本文由2345好导航站长资讯发布,如需转载请注明出处。

本文链接:http://www.2345hao.cn/blog/index.php/post/22520.html

分享给朋友:

“浅谈SQL Server 2008中的行压缩” 的相关文章

Windows7开机后出现黑一下屏性能降低

Windows7开机后出现黑一下屏性能降低

打开IE浏览器的时候、聊QQ的时候、玩游戏的时候… … 这到底是谁惹的祸呢? 很多人都知道Windows 7桌面特效全部开启会使系统性能降低,那到底是哪个特效导致的这一情况呢? 解决办法: 右键计算机,高级系统设置-性能-设置-关闭”任务栏和开始菜单使用动画“和”最大化和最小化动态显示窗口“...

解决windows 7无法将程序锁定到任务栏或附到开始菜单的方法

解决windows 7无法将程序锁定到任务栏或附到开始菜单的方法

出现该问题的原因是由于使用第三方优化软件消除快捷方式的小箭头引起的。 1、在开始搜索框中键入“regedit”,按回车键打开注册表编辑器。 2、依次定位到以下分支:HKEY_CLASSES_ROOTlnkfile。 3、在lnkfile项上鼠标右键单击“新建”——“字符串值”。...

windows 7系统怎么取消禁ping命令?

windows 7系统怎么取消禁ping命令?

当我在虚拟机的linux系统中ping本机的ip发现ping不通,而本机可以ping通虚拟机中的ip。应该是出于安全考虑吧,Windows 7默认在防火墙里禁止了。 1、查看主机ip 打开“开始”程序中的“附件”,找到“命令提示符”打开。输入命令:ipconfig,可以看到本机的ip是192.1...

windows 7旗舰版系统提示应用程序错误代码0xc0000409的故障原因

windows 7旗舰版系统提示应用程序错误代码0xc0000409的故障原因

问题现象,具体如下所示:  故障分析: 一般来说,出现这种情况是因为电脑误删系统文件或者是系统文件被顽固木马破坏。       解决方法: 1、下载360安全卫士,找到里面的急救箱开始急救,然后进行修复,完成后重新启动; 2、下载瑞...

windows 7为什么老掉线 windows 7使用迅雷或快车下载的时候老掉

windows 7为什么老掉线 windows 7使用迅雷或快车下载的时候老掉

经过几天的测试后发现,Windows 7用户反映的情况确实存在,但并没有达到“频繁”的情况。同时,也并非是迅雷或快车抢了带宽。(即便是抢了带宽,表现的形式也是页面打开慢,而非是掉线),寻找问题的原因过程中,我们认为是Windows 7系统对于网卡的电源管理的默认设置造成的。 下面,就以Window...

windows 7 xp宋体 成功替换windows 7宋体为XP宋体的方法

windows 7 xp宋体 成功替换windows 7宋体为XP宋体的方法

很多朋友从XP升级迈入了Windows 7的殿堂,却发现,Windows 7确实好用和华丽,可是有一些地方不太适应。今天举出一则例子,是把Windows 7系统下的宋体替换为XP系统下的字体。这个并非无聊,大家去网上搜索下,就知道有多少人想要这么做了。 没办法,每人的需求总是那么的不同,好吧,怀旧...