分区维护
可以使用用于此目的的SQL语句在分区表上执行许多表和分区维护任务。
分区表的表维护可以使用语句来实现CHECK TABLE,OPTIMIZE TABLE,ANALYZE TABLE,和REPAIR TABLE,其被支持的分区表。
您可以使用许多扩展名ALTER TABLE直接在一个或多个分区上执行此类型的操作,如下表所示:
重建分区。重建分区;这与删除存储在分区中的所有记录,然后重新插入它们的效果相同。这对于碎片整理很有用。
例:
ALTER TABLE t1REBUILD PARTITION p0, p1;优化分区。如果已经从一个分区删除大量行或如果已进行许多改变,以与可变长度行分区表(即,具有
VARCHAR,BLOB或TEXT列),可以使用ALTER TABLE ... OPTIMIZE PARTITION以回收任何未使用的空间和整理分区数据文件。例:
ALTER TABLE t1OPTIMIZE PARTITION p0, p1;使用
OPTIMIZE PARTITION给定分区上相当于跑步CHECK PARTITION,ANALYZE PARTITION和REPAIR PARTITION在该分区上。某些MySQL存储引擎(包括
InnoDB)不支持按分区优化;在这种情况下,ALTER TABLE ... OPTIMIZE PARTITION分析并重建整个表,并发出适当的警告。(缺陷号11751825,缺陷号42822)使用ALTER TABLE ... REBUILD PARTITION和ALTER TABLE ... ANALYZE PARTITION代替,以避免出现此问题。分析分区。这将读取并存储分区的密钥分布。
例:
ALTER TABLE t1ANALYZE PARTITION p3;修复分区。这将修复损坏的分区。
例:
ALTER TABLE t1REPAIR PARTITION p0,p1;通常,
REPAIR PARTITION当分区包含重复的键错误时失败。您可以使用ALTER IGNORE TABLE此选项,在这种情况下,由于存在重复键而无法移动的所有行将从分区中删除(错误#16900947)。检查分区。您可以按照
CHECK TABLE与未分区表相同的方式检查分区中的错误。例:
ALTER TABLE trb3CHECK PARTITION p1;该命令将告诉您
p1表分区中的数据或索引t1是否已损坏。如果是这种情况,请使用ALTER TABLE ... REPAIR PARTITION修复分区。通常,
CHECK PARTITION当分区包含重复的键错误时失败。您可以使用ALTER IGNORE TABLE此选项,在这种情况下,该语句返回发现重复键冲突的分区中每一行的内容。仅报告表分区表达式中各列的值。错误16900947)
刚显示的列表中的每个语句在ALL分区名称列表中都支持关键字。使用ALL会导致该语句作用于表中的所有分区。
您也可以使用截断分区ALTER TABLE ... TRUNCATE PARTITION。该语句可用于删除一个或多个分区中的TRUNCATE TABLE所有行,其方式与删除表中的所有行的方式几乎相同。
ALTER TABLE ... TRUNCATE PARTITION ALL截断表中的所有分区。
