国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 數(shù)據(jù)庫(kù) > SQL Server > 正文

淺談SQL Server 2008中的行壓縮

2024-08-31 00:53:12
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
  在創(chuàng)建表或索引,或者修改表或索引時(shí)可以啟用行壓縮特性。壓縮可以基于行級(jí)、頁(yè)面級(jí)和備份級(jí),本文將舉例說(shuō)明如何創(chuàng)建一個(gè)具備行壓縮功能的表,以及修改一個(gè)表,使其具備行壓縮功能。

  首先創(chuàng)建一個(gè)未開(kāi)啟行壓縮功能的表,使用下面的SQL語(yǔ)句往表里插入一些數(shù)據(jù):

  

/****** 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語(yǔ)句查詢這個(gè)表占用的空間大小:

  EXEC sp_spaceused [NONCompressed Table]

  返回結(jié)果:

name,rows,reserved,data,index_size,unused   
NoNCompressed Table,30003 ,968 KB,944 KB,8 KB,16 KB
  現(xiàn)在我們創(chuàng)建一個(gè)啟用了行壓縮的表,使用下面的SQL語(yǔ)句插入相同數(shù)量的數(shù)據(jù):

/****** 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語(yǔ)句查詢表的空間占用情況:

  EXEC sp_spaceused [Compressed Table]

  返回結(jié)果:

  name,rows,reserved,data,index_size,unused

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

  結(jié)果顯示壓縮表比非壓縮表占用的空間小得多。

  有一種情況是表中已經(jīng)有很多數(shù)據(jù),但現(xiàn)在需要進(jìn)行壓縮,該怎么辦呢?在這種情況下,可以ALTER TABLE語(yǔ)句增加數(shù)據(jù)壓縮功能,我們創(chuàng)建另一個(gè)未啟用壓縮功能的表來(lái)模擬一下,使用下面的SQL語(yǔ)句添加數(shù)據(jù)到表中:

/****** 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語(yǔ)句查詢?cè)摫碚加玫目臻g大小:

  EXEC sp_spaceused [NONCompressed Table2]

  返回結(jié)果:

name,rows,reserved,data,index_size,unused   
NoNCompressed Table,30003 ,968 KB,944 KB,8 KB,16 KB
  使用下面的ALTER TABLE語(yǔ)句啟用表的壓縮功能:

ALTER TABLE [NoNCompressed Table2]   
REBUILD WITH (DATA_COMPRESSION = ROW );
  然后使用下面的SQL語(yǔ)句查詢表的空間占用情況:

  EXEC sp_spaceused [NONCompressed Table2]

  返回結(jié)果:

  name,rows,reserved,data,index_size,unused

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

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 九台市| 灵寿县| 桃园市| 海盐县| 高阳县| 宜兰市| 南汇区| 镇坪县| 繁峙县| 肇州县| 明溪县| 上栗县| 略阳县| 丹寨县| 汪清县| 资溪县| 长寿区| 伊金霍洛旗| 牟定县| 柳江县| 青浦区| 闻喜县| 密云县| 东兴市| 天水市| 汝城县| 昌黎县| 永定县| 辽源市| 山阴县| 衡水市| 二连浩特市| 湖北省| 新源县| 门源| 十堰市| 云龙县| 英吉沙县| 汤阴县| 华池县| 德江县|