可以使用专用的SQL语句在分区表上执行许多表和分区维护任务。
分区表的表维护可以使用这些语句来完成检查表
,优化表
,分析表
,修理表
,它们对于分区表是支持的。
您可以使用一些扩展来ALTER TABLE
对于直接在一个或多个分区上执行这种类型的操作,如下表所示:
重建分区。重新构建分区;这与删除存储在分区中的所有记录,然后重新插入它们的效果相同。这对于碎片整理很有用。
例子:
重建分区p0, p1;
优化分区。如果您从一个分区中删除了大量行,或者您对一个具有变长行的分区表进行了许多更改(即有
VARCHAR
,团
,或文本
列),可以使用修改表…优化分区
回收任何未使用的空间并对分区数据文件进行碎片整理。例子:
优化分区p1, p1;
使用
优化分区
等于在一个给定的分区上运行检查分区
,分析分区
,修复分区
在那个分区上。一些MySQL存储引擎,包括
InnoDB
,不支持分区优化;在这些情况下,修改表…优化分区
分析并重建整个表,并发出适当的警告。(Bug #11751825, Bug #42822)使用修改表…重建分区
而且修改表…分析分区
相反,为了避免这个问题。分析分区。它读取并存储分区的键分布。
例子:
解析分区p3;
修复分区。这可以修复损坏的分区。
例子:
修复分区p0,p1;
通常情况下,
修复分区
当分区包含重复的键错误时失败。你可以用修改忽略表
在这种情况下,由于存在重复键而无法移动的所有行都将从分区中删除(Bug #16900947)。检查分区。您可以用与使用相同的方法检查分区是否有错误
检查表
使用非分区表。例子:
检查表trb3分区
这个语句告诉您是数据还是索引在分区中
p1
的表t1
是损坏的。如果是这种情况,使用修改表…修复分区
修理隔断。通常情况下,
检查分区
当分区包含重复的键错误时失败。你可以用修改忽略表
使用此选项,在这种情况下,语句将返回发现重复键违反的分区中每一行的内容。只报告表的分区表达式中列的值。(错误# 16900947)
刚才显示的列表中的每个语句也支持关键字所有
代替分区名称列表。使用所有
使语句作用于表中的所有分区。
还可以使用截断分区修改表…截断分区
.该语句可用于从一个或多个分区中删除所有行,其方法与前面的截断表
删除表中的所有行。
修改表…截断所有分区
截断表中的所有分区。