如何对已经存在的数据表进行分区

如何对已经存在的数据表进行分区,第1张

过程中为SQL Server数据表划分为三个步骤:

1)建立分区函数

2)建立分区方案

3)对表的分区

第一步:建立分区函数

分区函数定义[U]如何[/ U],也就是你想怎么SQL Server数据分区。这里不是一个特定的表作为一个例子,但总的技术部门总结的数据。

分区指定为每个分区用分区边界来实现。例如,假设我们有一个客户表,其中包含所有的企业客户信息,客户信息与客户的唯一标识号,客户编号从1到100万。我们可以使用下面的分区功能(这里称为customer_Partfunc)把这个表分为四个分区:

CREATE PARTITION FUNCTION customer_partfunc(INT)

AS RANGE RIGHT

输入值( 250000,500000,750000)

这些边界划分指定了四个分区。第一个分区包含所有值?少于25万的记录。第二个分区包含所有值?之间250,000和499,999的记录。第三个分区包含所有值?500,000至749,999记录。大于或等于750,000的所有其他记录都包含在第四个分区中。

请注意,此示例使用“RANGE RIGHT”条款。这表明,该边界值是分区的右侧。同样,如果您使用“RANGE LEFT”条款,那么第一个分区将包含所有的值小于或等于25万条记录?第二个分区将包含所有的值250001和500000之间的记录,等等??

第二步:创建

分区方案

一旦如何分区功能分区后的数据完整的定义,下一步是创建一个分区方案,定义[ U],其中[/ U],这就是你要分区的数据。这是一个非常简单的过程,例如,如果我有四个文件组,从“FG1”到“FG4”的名字,那么你可以使用下面的分区方案:

创建分区计划customer_partscheme

作为间隔customer_partfunc

要(FG1,FG2,FG3,FG4)

请注意,我们现在把一个分区函数连接到分区规划,但我们还没有连接在分区方案的任何具体的数据库表。这是重复使用的功能函数时。我们可以利用这个功能来分区方案(或只是一个分区函数)对数据库表的任何数据。

第三步:表已分区

建立良好的分区方案后,就可以开始对表进行分区。这是最简单的一步,只需加上“ON”子句中的表创建语句指定表的分区方案,并申请表列的分区方案。你不需要指定分区函数,分区方案已经因为分区函数定义。

例如,假设你想使用上述的分区方案来创建一个客户表,您需要使用以下Transact-SQL语句:

CREATE TABLE客户(姓数据类型为nvarchar(40),姓氏为nvarchar(40),CUSTOMERNUMBER INT)

开customer_partscheme(CUSTOMERNUMBER)

有两种方法可以实现对一个表分区.一是创建一个新的标识为分区表的表(你可参照此步骤),然后把数据复制到这张新表,再对这两张表分别改名.或者,像我写在下面的,通过重建或创建一个聚集索引来达到分区一个表.

一个SQL Server表和数据进行分区示例

--Table/Index creation

CREATE TABLE [dbo].[TABLE1]

([pkcol] [int] NOT NULL,

[datacol1] [int] NULL,

[datacol2] [int] NULL,

[datacol3] [varchar](50) NULL,

[partitioncol] datetime)

GO

ALTER TABLE dbo.TABLE1 ADD CONSTRAINT PK_TABLE1 PRIMARY KEY CLUSTERED (pkcol)

GO

CREATE NONCLUSTERED INDEX IX_TABLE1_col2col3 ON dbo.TABLE1 (datacol1,datacol2)

WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,

ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)

ON [PRIMARY]

(1)如果原来就是分区表,那么创建新分区是没有任何问题的,已经存在的数据会自动分配到相应的分区。。

(1)如果原来不是分区表,按照一般来说不可以,分区表只能重建,新建表是分区表,然后再把数据导入才可以。

(2)不过oracle也没有一棍子打死所有可能,非分区表也可以通过alter table exchange partition方法和dbms_redefinition 方法变成分区表,只是过程显得麻烦和不必要,最好还是重建一张分区表,这样更保险一些。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11933196.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-19
下一篇2023-05-19

发表评论

登录后才能评论

评论列表(0条)

    保存