龙空技术网

MySQL分区(Partition)功能

不完美的程序猿 847

前言:

现在兄弟们对“mysql重建分区”大概比较关心,小伙伴们都需要分析一些“mysql重建分区”的相关资讯。那么小编同时在网上收集了一些关于“mysql重建分区””的相关内容,希望姐妹们能喜欢,看官们快快来学习一下吧!

1. 在SQL SERVER 2008 R2 SP2之前版本,对分区只支持到1000个分区,之后版本支持到15000个分区。

2. 分区索引对齐并不要求索引和表使用同一分区方案,但要求两者使用的分区方案本质相同,即:

1) 分区函数的参数具有相同的数据类型;

2) 分区函数定义了相同数目的分区;

3) 分区函数为分区定义了相同的边界值。

3. 分区合并:合并边界值所在的分区被删除,然后向邻近的分区合并。

4. 查看指定值所属分区:SELECT $PARTITION.partitionFunctionName('express')

5. 查询指定分区的数据:

SELECT * FROM [dbo].[TB1]

WHERE $PARTITION.pf_Test(PID)=$PARTITION.pf_Test(2155)

6. 将非分区表装换成分区表:删除聚簇索引,新建聚簇索引并指定分区键和分区函数,重建非聚簇索引。

7. 对不在同一文件组的两个分区进行合并,需要考虑合并照成的IO影响,对处于同一个文件组的两个分区合并,不会造成过多IO影响。

8. 合并分区:ALTER PARTITION FUNCTION patitionFunctionName() MERGE RANGE(rangeValue)

9. 拆分分区:

1)指定新分区使用文件组:

ALTER PARTITION SCHEME partitionSchemaName

NEXT USED fileGroupName;

2)修改边界值:

ALTER PARTITION FUNCTION partitionFunctionName ()

SPLIT RANGE (rangeValue)

10. 可以对两个相邻的分区进行合并,如果两个分区都不为空,那么合并可能耗费大量时间和资源。

12. 在内存低于16GB的服务器上,不推荐使用超过1000的分区

13. 在分区表上创建非聚集非对齐索引时,会同时对所有分区上创建排序表,因此需要使用大量内存,当内存不足时,创建失败。

14. 在分区表上创建非聚集对齐索引时,会依次在每个分区上创建排序表,由于创建排序表过程是串行执行,因此不会使用大量内存从而使性能下降。

15. 当内存有压力时,如需要在分区数较大的分区表上建立非聚集非对齐索引时,可修改最大并行度为较小值来降低创建索引的内存使用。

16. 在使用分区表时,应该检查和修改分区表的锁升级

视频加载中...

标签: #mysql重建分区