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

浅谈SQL Server 2008中的行压缩

a8116255310年前 (2015-10-16)系统运维9

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

首先创建一个未开启行压缩功能的表,使用下面的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://2345hao.cn/blog/index.php/post/22520.html

分享给朋友:

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

windows 7/8.1正在启动windows时间长的解决方法

windows 7/8.1正在启动windows时间长的解决方法

正在启动windows时间长怎么办 小编带来了Windows 7/8.1正在启动windows时间长解决方法,假如有朋友在安装完Windows系统之后一直停留在“正在启动windows”的话,不妨试一试下文的方法哦~ 原因:Windows 7/8.1不完全支持UEFI,需要CSM(Comp...

微软今天正式停止对windows 7的主流支持

微软今天正式停止对windows 7的主流支持

北京时间1月13日消息,根据计划,微软将于2015年1月13日正式结束对Windows 7SP1的“主流支持”,而这也标志着“扩展支持”阶段的开始,这个阶段将于2020年1月14日结束。 2013年10月份,微软终止销售独立的Windows 7系统安装包,并要求制造商于2014年10月份停止生...

windows 7系统重装后卡在正在启动Windows开机界面怎么办

windows 7系统重装后卡在正在启动Windows开机界面怎么办

重装系统是我们面对许多电脑问题时的终极方法,不过重装系统也不意味着就能将全部的问题都修复。一些用户在重装系统后开机时,电脑卡在“正在启动Windows”开机界面上了,这要怎么解决呢? Windows 7系统重装后卡在开机界面的解决方法: 一、首先可以看看该故障出现的原因是否是因为启动了acp...

ubuntu14.04打开个几个应用窗口最小化后怎么切换呢?

ubuntu14.04打开个几个应用窗口最小化后怎么切换呢?

ubuntu14.04应用窗口列表在哪里?在ubuntu下打开个几个应用窗口最小化后怎么切换呢,应用窗口列表在哪里呢? 1、多打开几个chrome浏览器窗口。 2、然后都做最小化处理。 3、现在我们在桌面左边的面板上找到"左右两边有小白点"的chrome浏览器应用图标,这就是chr...

windows 7/8/xp系统关闭自动播放功能禁止音频媒体自动播放

windows 7/8/xp系统关闭自动播放功能禁止音频媒体自动播放

Windows 7/8系统: 控制面板——自动播放——取消掉为所有媒体和设备设置自动播放 winXP系统: 开始—运行—gpedit.msc—计算机配置—管理模板—系统—关闭自动播放—已启用—所有驱动器—确定  关闭自动运行功能说明: 一旦您将媒体插入驱动器...

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

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

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