实战分区表—创建分区表

来源:互联网 发布:大学霸 kali知乎 编辑:程序博客网 时间:2024/05/01 03:10

创建分区表分以下六步:

1、创建文件组
2、
为文件组分配文件
3、
创建分区函数
4、
创建分区架构
5、
创建分区表
6、向分区表写入数据

示例以及说明如下:

Step1:创建文件组

说明

为了有助于优化性能和维护,应使用文件组分离数据。文件组的数目一定程度上由硬件资源决定:一般情况下,文件组数最好与分区数相同,并且这些文件组通常位于不同的磁盘上。使用 ALTER DATABASE,添加逻辑文件组名

语法

ALTER DATABASE database_name ADD FILEGROUP filegroup_name

 

参数说明

database_name:要修改的数据库的名称。

filegroup_name:逻辑文件组名

示例

向数据库QMIntegratiww添加文件组FRX2006BefFRX2007FRX2008

ALTER DATABASE [QMIntegratiww] ADD FILEGROUP [FRX2006Bef]

ALTER DATABASE [QMIntegratiww] ADD FILEGROUP [FRX2007]

ALTER DATABASE [QMIntegratiww] ADD FILEGROUP [FRX2008]

 

Step2: 为文件组分配文件

说明

创建文件组后,使用 ALTER DATABASE 将文件添加到文件组中

语法

ALTER DATABASE database_name  ADD FILE ( NAME = logical_file_name  , FILENAME = 'os_file_name'  , SIZE = size [ KB | MB | GB | TB ]  , FILEGROWTH = growth_increment [ KB | MB | GB | TB| % ]) TO FILEGROUP filegroup_name

 

参数说明

database_name要修改的数据库的名称。

logical_file_name指定文件的逻辑名称。

os_file_name:文件的物理名称,包括路径和文件名称,指定的路径必须在服务器上已经存在。

Size文件的大小,后缀 KBMBGB TB 可用于指定千字节、兆字节、千兆字节或兆兆字节。默认为 MB

growth_increment文件的自动增量,后缀可以 MBKBGBTB 或百分比 (%) 为单位指定。如果未在数字后面指定 MBKB %,则默认值为 MB。如果指定 %,则增量大小为发生增长时文件大小的指定百分比。

filegroup_name逻辑文件组名。

示例

100MB的文件QMInt_FRX2006Bef添加到文件组FRX2006Bef

100MB的文件QMInt_FRX2007添加到文件组FRX2007

100MB的文件QMInt_FRX2008添加到文件组FRX2008

ALTER DATABASE [QMIntegratiww] ADD FILE ( NAME = N'QMInt_FRX2006Bef', FILENAME = N'H:/QMIntegratiww/Fault_Repair_X/QMInt_FRX2006Bef.ndf' , SIZE = 100MB , FILEGROWTH = 10MB ) TO FILEGROUP [FRX2006Bef]

 

ALTER DATABASE [QMIntegratiww] ADD FILE ( NAME = N'QMInt_FRX2007', FILENAME = N'H:/QMIntegratiww/Fault_Repair_X/QMInt_FRX2007.ndf' , SIZE = 100MB , FILEGROWTH = 10MB ) TO FILEGROUP [FRX2007]

 

ALTER DATABASE [QMIntegratiww] ADD FILE ( NAME = N'QMInt_FRX2008', FILENAME = N'H:/QMIntegratiww/Fault_Repair_X/QMInt_FRX2008.ndf' , SIZE = 100MB , FILEGROWTH = 10MB ) TO FILEGROUP [FRX2008]

 

 

Step3: 创建分区函数

说明

分区函数用于定义分区的边界条件,首先定义边界点:如果存在五个分区,则定义四个边界点值。

语法

CREATE PARTITION FUNCTION partition_function_name ( input_parameter_type )
AS RANGE [LEFT | RIGHT ]
FOR VALUES ( [ boundary_value [ ,...n ] ] )


参数说明

partition_function_name:是分区函数的名称。分区函数名称在数据库内必须唯一,并且符合标识符的规则。

input_parameter_type:用于分区的列的数据类型。当用作分区列时,除 textntextimagexmltimestampvarchar(max)nvarchar(max)varbinary(max)、别名数据类型或 CLR 用户定义数据类型外,所有数据类型均有效。实际列(也称为分区列)是在 CREATE TABLE CREATE INDEX 语句中指定的。

boundary_value:每个分区的边界值。

LEFT | RIGHT:指定当间隔值由 数据库引擎 按升序从左到右排序时,boundary_value [ ,...n ] 属于每个边界值间隔的哪一侧(左侧还是右侧)。如果未指定,则默认值为 LEFT

对于LEFTRIGHT创建分区函数示例说明如下:
CREATE PARTITION FUNCTION PF_Left(int)
AS RANGE LEFT
FOR VALUES(10, 20)
GO

CREATE PARTITION FUNCTION PF_Right(int)
AS RANGE RIGHT
FOR VALUES(10, 20)
GO

PF_Left
PF_Right 分区函数的区分:
分区函数        分区1        分区2        分区3
PF_Left        <= 10         > 10 and <= 20        > 20
PF_Right        < 10        >= 10 and < 20        >= 20

示例

CREATE PARTITION FUNCTION [pf_int_FRX_UPDATETIME](DATETIME) AS RANGE RIGHT

FOR VALUES ('2007-01-01', '2008-01-01', '2009-01-01','2010-01-01','2011-01-01','2012-01-01')

 

 

Step4:创建分区架构(Schema

说明

创建分区函数后,必须将其与分区架构(Schema)相关联,以便将分区定向至特定的文件组。定义分区架构时,即使多个 分区位于同一个文件组中,也必须为每个分区指定一个文件组。

语法

CREATE PARTITION SCHEME partition_scheme_name AS PARTITION partition_function_name TO ( { file_group_name | [ PRIMARY ] } [ ,...n ] )

 

参数说明

partition_scheme_name:分区方案的名称。分区方案名称在数据库中必须是唯一的,并且符合标识符规则。

partition_function_name:分区函数的名称。partition_function_name 必须已经存在于数据库中。

file_group_name | [ PRIMARY ] [ ,...n]:文件组的名称。file_group_name 必须已经存在于数据库中。如果指定了 [PRIMARY],则分区将存储于主文件组中

示例

CREATE PARTITION SCHEME [ps_int_FRX] AS PARTITION [pf_int_FRX_UPDATETIME]

 TO ([FRX2006Bef]

    ,[FRX2007]

    ,[FRX2008]

    ,[PRIMARY]  -- 2009年数据

    ,[PRIMARY]  -- 2010年数据

    ,[PRIMARY]  -- 2011年数据()

    ,[PRIMARY]  -- 2012以后年数据()

    )

 

Step5: 创建分区表

说明

定义了分区函数(逻辑结构)和 分区架构(物理结构)后,既可以创建分区表来利用它们。分区表定义其使用的分区架构,而分区架构又定义其使用的分区函数。要将这三者结合起来,必须指定应用于分区函数的 。范围分区始终只映射到表中的一列。

语法

CREATE TABLE table_name
        ( { <column_definition>[ ,...n ]  })
     
ON partition_scheme_name ( partition_column_name )

参数说明

table_name:表名称

column_definition:列的声明

partition_scheme_name:分区架构名称

partition_column_name:分区列

示例

CREATE TABLE [dbo].[Fault_Repair_X](

    [FEE_REPAIR_ID] [varchar](30) NOT NULL,

    [PROD_LINE_SPM] [varchar](20) NULL,

    [PRODUCT_LINE] [varchar](20) NULL,

    [FLAG_PROD_LINE] [varchar](20) NULL,

    [MACHINE_TYPE] [varchar](100) NULL,

    [ISDOA] [char](1) NULL,

    [PRODUCT_DATE] [datetime] NULL,

    [COMEOUT_DATE] [datetime] NULL,

    [BUY_DATE] [datetime] NULL,

    [FLAG_DELETE] [varchar](10) NULL,

    [DELETE_REASON] [varchar](1000) NULL,

    [UPDATE_TIME] [datetime] NULL,

    [UPDATE_ITEM] [varchar](2000) NULL,

    [DateStamp] [datetime] NULL

) on  ps_int_FRX(UPDATE_TIME)

 

GO

 

Step6:向分区表写入数据

说明

向分区表插入数据

示例

 

insert into [Fault_Repair_X] --(3125438 row(s) affected)

select * from QMAnalysisww.dbo. Fault_Repair_X

 

原创粉丝点击