sqlserver 2008表分区操作
表分区操作步骤 1、设计表进行分区的方案,水平分区、垂直分区 ?????? a、水平切割将减少表的行数,这样可以将历史数据归档,减少表大小,提高访问速度。 ?????? b、垂直切割将分为主表和从表方式,将主要的列字段存放在主表中,次要的列字段存放在从表中,减少对不必要字段的访问和存放,只在需要的时候进行联表查询 2、根据业务规则确定按照日期或其他的分区原则选择分区列 3、根据选择的分区列,确定分区数,创建对应的文件组和数据文件数 ????? 最好一个分区对应一个文件组和一个数据文件,分区数据文件最好分布在不同的磁盘上,这样有利于数据库并行操作,特别是多核cpu对I/O的访问 4、创建分区函数 ????? 参见下面说明 5、创建分区架构 ????? 参见下面说明 6、创建分区表 ????? 参见下面说明 7、创建分区索引,分区聚集唯一索引 ?????? a、分区索引可以使用不同的分区架构,但必须使用相同的分区函数,存储在不同的文件组中,但是这样讲导致索引与数据表无法对齐。 ?????? b、建议尽量使用相同的分区架构,确保索引和数据表对齐,这样特别有利于滑动窗口方式的查询操作。 ?????? c、大型的分区表要有唯一聚集索引或唯一索引 ???????????? 唯一索引必须包含分区列,这样才能让sqlserver只访问需要的分区 表分区与分表操作的区别
创建表分区架构 CREATE PARTITION SCHEME [Sln_Partition_Tbl_IntegeralLog] AS PARTITION [Fn_Partition_Tbl_IntegeralLog] TO ([文件组名1],[文件组名2],[文件组名3]) GO 修改表分区架构 删除表分区架构 IF? EXISTS ( SELECT * FROM sys.partition_schemes WHERE name = N'Sln_Partition_Tbl_IntegeralLog' ) DROP PARTITION SCHEME [Sln_Partition_Tbl_IntegeralLog] GO 创建表分区函数 CREATE PARTITION FUNCTION [Fn_Partition_Tbl_IntegeralLog](datetime) AS RANGE LEFT FOR VALUES (N'2010-01-01T00:00:00.000',N'2011-01-01T00:00:00.000',N'2012-01-01T00:00:00.000',N'2013-01-01T00:00:00.000',N'2014-01-01T00:00:00.000') GO 修改表分区函数 删除表分区函数 IF EXISTS ( SELECT * FROM sys.partition_functions WHERE name = N'Fn_Partition_Tbl_IntegeralLog' ) DROP PARTITION FUNCTION [Fn_Partition_Tbl_IntegeralLog] GO查询表分区数据分布情况 select $partition.Fn_Partition_Tbl_IntegeralLog(tC_Time) [分区编号],count(*) [分区编号],min(tC_Time) [起始分界],max(tC_Time) [终止分界] from dbo.Tbl_IntegeralLog group by $partition.Fn_Partition_Tbl_IntegeralLog(tC_Time) 创建分区表 CREATE TABLE Tbl_IntegeralLog ( tC_Id INT is not null,tC_Time datetime default getdate(),PRIMARY KEY (ID) ) ON Fn_Partition_Tbl_IntegeralLog(tC_Time) GO 查询表记录分配到哪个分区中 SELECT *,$PARTITION.Fn_Partition_Tbl_IntegeralLog(tC_Time) FROM Tbl_IntegeralLog 查询分区2中的记录信息 select * from Tbl_IntegeralLog where $PARTITION.Fn_Partition_Tbl_IntegeralLog([tC_Time])= 2 查询分区函数、分区边界值、分区架构 select * from sys.partition_functions select * from sys.partition_range_values select * from sys.partition_schemes 根据分区字段的值查询出分区号 SELECT $PARTITION.Fn_Partition_Tbl_IntegeralLog('2011-01-01') 以下目录视图包含数据库、表和索引级别的分区信息,以及有关单个分区函数和分区方案的信息。 获取有关单个分区函数的信息
获取有关分区函数的单个参数的信息
获取有关分区函数边界值的信息
获取有关数据库中所有分区方案的信息
获取有关单个分区方案的信息
获取有关数据库中所有分区的信息
获取有关表或索引的分区信息
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |