SQL Server 2008如何创建分区表,并压缩数据库空间
1、什么是分区表
分区表在逻辑上是一个表,而物理上是多个表。从用户角度来看,分区表和普通表是一样的。使用分区表的主要目的是为改善大型表以及具有多个访问模式的表的可伸缩性和可管理性。分区表是把数据按设定的标准划分成区域存储在不同的文件组中,使用分区可以快速而有效管理和访问数据子集。
适合做分区表的情况
◊ 数据库中某个表的数据很多,在查询数据时会明显感觉到速度很慢,这个时候需要考虑分区表;
◊ 数据是分段的,如以年份为分隔的数据,对于当年的数据经常进行增删改查操作,而对于往年的数据几乎不做操作或只做查询操作,这种情况可以使用分区表。对数据的操作如果只涉及一部分数据而不是全部数据的情况可以考虑分区表,如果一张表的数据经常使用且不管年份之类的因素经常对其增删改查操作则最好不要分区。
◊ 对于具有多个CPU的系统,分区可以对表的操作通过并行的方式进行,可以提升访问性能。
创建分区表的步骤分为5步:
(1)创建数据库文件组
(2)创建数据库文件
(3)创建分区函数
(4)创建分区方案
(5)创建分区表
3.1、创建数据库文件组
注:数据库:ZMQGL_TEST;表:dbo.ENTRY_HEAD、dbo.ENTRY_LIST为例
创建文件组:alter database ZMQGL_TEST add filegroup Group1
语法:alter database <数据名称> add filegroup <文件组名称>
3.2、创建数据库文件
创建文件并添加到文件组中:
alter database ZMQGL_TEST add file
(name=N'ById1',filename=N'E:\DB\ZMQGL_test\ById1.ndf',size=5Mb,filegrowth=5mb)to filegroup Group1语法:alter database <数据库名称> add file <数据标识> to filegroup <文件组名称>--<数据标识> (name:文件名,fliename:物理路径文件名,size:文件初始大小kb/mb/gb/tb,filegrowth:文件自动增量kb/mb/gb/tb/%,maxsize:文件可以增加到的最大大小kb/mb/gb/tb/unlimited)
3.3、创建分区函数、创建分区方案、创建分区表
右键到要分区的表--- >> 存储 --- >> 创建分区 --- >>显示向导视图 --- >> 下一步 --- >> 下一步。。
点击“下一步”,最后点击完成会生成分区函数和分区方案的脚本,如下:USE [ZMQGL_TEST]GOBEGIN TRANSACTIONCREATE PARTITION FUNCTION [FQ_HS](datetime2(3)) AS RANGE LEFT FOR VALUES (N'2015-12-31T23:59:59.999', N'2016-12-31T23:59:59.999')CREATE PARTITION SCHEME [FQ_FA] AS PARTITION [FQ_HS] TO ([PRIMARY], [Group1], [Group2])CREATE CLUSTERED INDEX [ClusteredIndex_on_FQ_FA_636040955802353043] ON [dbo].[ENTRY_HEAD]([D_DATE])WITH (SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF) ON [FQ_FA]([D_DATE])DROP INDEX [ClusteredIndex_on_FQ_FA_636040955802353043] ON [dbo].[ENTRY_HEAD] WITH ( ONLINE = OFF )COMMIT TRANSACTION直接F5运行即可。
ALTER PARTITION SCHEME FQ_FA NEXT USED [Group3]'
ALTER PARTITION SCHEME <分区方案> NEXT USED <文件组>ALTER PARTITION FUNCTION <分区函数> SPLIT RANGE(<边界值>)
删除边界值为'2017-12-31 23:59:59.999'的分区
ALTER PARTITION FUNCTION FQ_HS() MERGE RANGE ('2017-12-31 23:59:59.999')
与之対应的分区方案也发生了变化。