SQL Server 2008如何创建分区表,并压缩数据库空间

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL Server 2008如何创建分区表,并压缩数据库空间相关的知识,希望对你有一定的参考价值。

1、什么是分区

 分区表在逻辑上是一个表,而物理上是多个表。从用户角度来看,分区表和普通表是一样的。使用分区表的主要目的是为改善大型表以及具有多个访问模式的表的可伸缩性和可管理性。分区表是把数据按设定的标准划分成区域存储在不同的文件组中,使用分区可以快速而有效管理和访问数据子集。

 

适合做分区表的情况

  ? 数据库中某个表的数据很多,在查询数据时会明显感觉到速度很慢,这个时候需要考虑分区表;

  ? 数据是分段的,如以年份为分隔的数据,对于当年的数据经常进行增删改查操作,而对于往年的数据几乎不做操作或只做查询操作,这种情况可以使用分区表。对数据的操作如果只涉及一部分数据而不是全部数据的情况可以考虑分区表,如果一张表的数据经常使用且不管年份之类的因素经常对其增删改查操作则最好不要分区。

 

2、 为什么要进行表分区
 ? 分区表可以从物理上将一个大表分成几个小表,但是从逻辑上来看还是一个大表。

 ? 对于具有多个CPU的系统,分区可以对表的操作通过并行的方式进行,可以提升访问性能。

3、怎么进行表分区

 创建分区表的步骤分为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]
GO
BEGIN TRANSACTION
CREATE 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运行即可。
 
 

 

4、新增分区表【新增分区边界】
       1、先新增文件组和文件,例如:Group3,并建立好对应关系
       2、新增边界值
ALTER PARTITION SCHEME FQ_FA NEXT USED [Group3]
    
语法“:
ALTER PARTITION SCHEME <分区方案> NEXT USED <文件组>
ALTER PARTITION FUNCTION <分区函数> SPLIT RANGE(<边界值>)

5、删除(合并)分区
    删除边界值为‘2017-12-31 23:59:59.999‘的分区
    ALTER PARTITION FUNCTION FQ_HS() MERGE RANGE (‘2017-12-31 23:59:59.999‘)
与之対应的分区方案也发生了变化。





以上是关于SQL Server 2008如何创建分区表,并压缩数据库空间的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 2005/2008/2012中应用分布式分区视图

删除分区 SQL Server 2008

如何在 SQL Server 2008 中进行分页

SQL Server 2008 分区函数和分区表

深入浅出SQL Server 2008 分区函数和分区表

SQL Server 2008 表分区的含义