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