分区维护
可以使用用于此目的的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
截断表中的所有分区。