sql SERVER 创建表分区步骤
1. 创建分区函数
2. 创建分区架构3. 创建表分区
-- 1 .创建数据库文件组分区 IF EXISTS (SELECT name FROM sys.databases WHERE name = N'PartDB') DROP DATABASE PartDB GO CREATE DATABASE [PartDB] ON PRIMARY ( NAME= 'PartDB_PFG',FILENAME= 'I:\sqlserver\Partition\Primary\PartDB_PFG.mdf',SIZE=5MB,MAXSIZE=50MB,FILEGROWTH=1MB ),FILEGROUP [PartDB_FG01] ( NAME= 'PartDB_FG01',FILENAME= 'I:\sqlserver\Partition\filegroup01\PartDB_FG01.mdf',MAXSIZE=100MB,FILEGROWTH=5MB ),FILEGROUP [PartDB_FG02] ( NAME= 'PartDB_FG02',FILENAME= 'I:\sqlserver\Partition\filegroup02\PartDB_FG02.mdf',FILEGROUP [PartDB_FG03] ( NAME= 'PartDB_FG03',FILENAME= 'I:\sqlserver\Partition\filegroup03\PartDB_FG03.mdf',FILEGROUP [PartDB_FG04] ( NAME= 'PartDB_FG04',FILENAME= 'I:\sqlserver\Partition\filegroup04\PartDB_FG04.mdf',FILEGROUP [PartDB_FG05] ( NAME= 'PartDB_FG05',FILENAME= 'I:\sqlserver\Partition\filegroup05\PartDB_FG05.mdf',FILEGROWTH=5MB ) LOG ON ( NAME= 'PartDB_LOG',FILENAME= 'I:\sqlserver\Partition\logfile\PartDB_LOG.ldf',SIZE=1MB,FILEGROWTH=1MB ) USE PartDB GO -- 2. 创建范围分区函数 CREATE PARTITION FUNCTION pf_tab_ProductKey(int) AS RANGE LEFT FOR VALUES (300,400,500,600); -- 3. 创建分区架构 CREATE PARTITION SCHEME schema_pf_tab_ProductKey AS PARTITION pf_tab_ProductKey TO(PartDB_FG01,PartDB_FG02,PartDB_FG03,PartDB_FG04,PartDB_FG05) -- 4. 创建表 CREATE TABLE [dbo].[partTable]( [ProductKey] [int] NULL,[CustomerKey] [int] NULL,[OrderDateKey] [int] NULL,[UnitPrice] [money] NULL,[UnitPricediscountPct] [float] NULL,[dizhi] [varchar](50) NULL ) ON schema_pf_tab_ProductKey(ProductKey) --指定分区方案,以ProductKey为分区列 INSERT INTO partTable SELECT * from Sales_DW.dbo.tab --我从另一个数据库表取数据,60398条数据 -- 5. 查看使用情况 SELECT * FROM sys.partition_functions SELECT * FROM sys.partition_schemes SELECT * FROM sys.partition_range_values SELECT * FROM sys.partition_parameters SELECT * FROM sys.partitions -- 6. 新增分区方案。先指定下一个文件组,再添加划分范围 -- 分割时分区锁定,数据迁移重组,消耗大量IO ALTER PARTITION SCHEME schema_pf_tab_ProductKey NEXT USED 'PartDB_FG05' ALTER PARTITION FUNCTION pf_tab_ProductKey() SPLIT RANGE (700) -- 7. 合并分区(相当删除) --如果分区函数定义的是left,左分区合并到右分区;right,右分区合并到左分区 ALTER PARTITION FUNCTION pf_tab_ProductKey() MERGE RANGE (700)
/* 【创建分区函数】 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: 为使用 partition_function_name 的已分区表或索引的每个分区指定边界值。 如果 boundary_value 为空,则分区函数使用 partition_function_name 将整个表或索引映射到单个分区。 只能使用 CREATE TABLE 或 CREATE INDEX 语句中指定的一个分区列。 指定 boundary_value 提供的值的数目,不能超过 999 LEFT | RIGHT: 指定当间隔值由 数据库引擎 按升序从左到右排序时,boundary_value [,...n ] 属于每个边界值间隔的哪一侧(左侧还是右侧)。 如果未指定,则默认值为 LEFT 【创建个分区架构】 CREATE PARTITION SCHEME partition_scheme_name AS PARTITION partition_function_name [ ALL ] TO ( { file_group_name | [ PRIMARY ] } [,...n ] ) [ ; ] partition_scheme_name 分区方案的名称。分区方案名称在数据库中必须是唯一的,并且符合标识符规则。 partition_function_name 使用分区方案的分区函数的名称。分区函数所创建的分区将映射到在分区方案中指定的文件组。 partition_function_name 必须已经存在于数据库中。 ALL 指定所有分区都映射到在 file_group_name 中提供的文件组,或映射到主文件组(如果指定了 [PRIMARY]。 如果指定了 ALL,则只能指定一个 file_group_name。 file_group_name | [ PRIMARY ] [,...n] 指定用来持有由 partition_function_name 指定的分区的文件组的名称。 file_group_name 必须已经存在于数据库中。 */
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。