sqlserver表分区的相关总结
sqlserver的分区表是一个很好的工具,大大提高运维人员管理数据的效率。根据自己的经验总结了一下: ? ?--常用分区语句: --1 ? ?查看数据库中的已分区表 --对sqlserver来说所有的表都是已分区表,所以我们只需要选择分区大于1的表即可 select distinct o.name from sys.tables o join sys.partitions p ? --2 ? 各分区数据行数统计 select distinct o.name,p.partition_number,p.rows from sys.tables o join sys.partitions p --3 ?分区包含的详细数据统计 select top 1000 $partition.fun_name(createtime) as partition,createtime as?date?from table_name order by partition where partition = 14 --4 ?单个分区的详细数据统计 select top 1000 $partition.fun_name(createtime) as "partition #",*from table_name --5 ?切出数据 --6 ?合并分区(删除分区) alter partition function month_fun() merge range('2010-12-31 T23:59:59,997') --7 ?添加新分区 alter partition function month_fun() split range('2011-02-28T23:59:59,sans-serif; ">--8 ?查看分区列数据类型 --需要注意的相关问题: --在分区方案设计为all to primary的情况下可以直接使用 alter partition fun split range进行增加分区;
alter partition scheme scheme_name next used?file4 --多个表共用一个分区方案和分区函数时修改一个表的分区方案和分区函数增加或删除分区时会同时影响所有使用分区函数的表;这个是一个非常消耗资源的操作。同时由于这个操作是原子性的。这样会造成相关的表在此期间被锁住,极大地影响数据库的使用。因此,现在在分区的时候尽量一个表使用一个分区函数和分区方案。? --分区列为null值的表也可以分区,已存在分区列null值的表进行分区会把null值的数据分到第一分区,分区后所有插入的分区列为null的数据都默认放到第一分区; --关于索引导致分区表无法切入切出的情况: --(2)主键索引:如果主键不是分区列,则需要建立联合主键包含分区列进行索引分区即可 --把分区表转换为普通表 这里澄清一个概念,普通表也是已分区表,只不过它只有一个分区,这个分区是根据聚集索引来的。这里指的普通表是说可以再利用别的字段进行分区的表。 /*切出分区 --建立分区语句(也可以使用msms图形界面直接创建): --多文件组方案 --创建分区表 create table testa1 (id int,createtime datetime) on scheme_name(createtime) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |