• 首页
  • css3教程
  • html5教程
  • jQuery手册
  • vue手册
  • php手册
  • MySQL手册
  • apache手册
  • redis手册
  • 分区维护

    可以使用用于此目的的SQL语句在分区表上执行许多表和分区维护任务。

    分区表的表维护可以使用语句来实现CHECK TABLEOPTIMIZE TABLEANALYZE TABLE,和REPAIR TABLE,其被支持的分区表。

    您可以使用许多扩展名ALTER TABLE直接在一个或多个分区上执行此类型的操作,如下表所示:

    • 重建分区。重建分区;这与删除存储在分区中的所有记录,然后重新插入它们的效果相同。这对于碎片整理很有用。

      例:

      ALTER TABLE t1 REBUILD PARTITION p0, p1;
      
    • 优化分区。如果已经从一个分区删除大量行或如果已进行许多改变,以与可变长度行分区表(即,具有VARCHARBLOBTEXT列),可以使用ALTER TABLE ... OPTIMIZE PARTITION以回收任何未使用的空间和整理分区数据文件。

      例:

      ALTER TABLE t1 OPTIMIZE PARTITION p0, p1;
      

      使用OPTIMIZE PARTITION给定分区上相当于跑步CHECK PARTITIONANALYZE PARTITIONREPAIR PARTITION在该分区上。

      某些MySQL存储引擎(包括InnoDB)不支持按分区优化;在这种情况下,ALTER TABLE ... OPTIMIZE PARTITION分析并重建整个表,并发出适当的警告。(缺陷号11751825,缺陷号42822)使用ALTER TABLE ... REBUILD PARTITIONALTER TABLE ... ANALYZE PARTITION代替,以避免出现此问题。

    • 分析分区。这将读取并存储分区的密钥分布。

      例:

      ALTER TABLE t1 ANALYZE PARTITION p3;
      
    • 修复分区。这将修复损坏的分区。

      例:

      ALTER TABLE t1 REPAIR PARTITION p0,p1;
      

      通常,REPAIR PARTITION当分区包含重复的键错误时失败。您可以使用ALTER IGNORE TABLE此选项,在这种情况下,由于存在重复键而无法移动的所有行将从分区中删除(错误#16900947)。

    • 检查分区。您可以按照CHECK TABLE与未分区表相同的方式检查分区中的错误。

      例:

      ALTER TABLE trb3 CHECK 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截断表中的所有分区。