实战分区表—创建分区表
来源:互联网 发布:大学霸 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添加文件组FRX2006Bef、FRX2007、FRX2008 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:文件的大小,后缀 KB、MB、GB 和 TB 可用于指定千字节、兆字节、千兆字节或兆兆字节。默认为 MB。
growth_increment:文件的自动增量,后缀可以 MB、KB、GB、TB 或百分比 (%) 为单位指定。如果未在数字后面指定 MB、KB 或 %,则默认值为 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:用于分区的列的数据类型。当用作分区列时,除 text、ntext、image、xml、timestamp、varchar(max)、nvarchar(max)、varbinary(max)、别名数据类型或 CLR 用户定义数据类型外,所有数据类型均有效。实际列(也称为分区列)是在 CREATE TABLE 或 CREATE INDEX 语句中指定的。
boundary_value:每个分区的边界值。
LEFT | RIGHT:指定当间隔值由 数据库引擎 按升序从左到右排序时,boundary_value [ ,...n ] 属于每个边界值间隔的哪一侧(左侧还是右侧)。如果未指定,则默认值为 LEFT。
对于LEFT和RIGHT创建分区函数示例说明如下:
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