我们专注服务于当下互联网基础设施建设与云计算、大数据时代的各种需求!

mysql5.6分区和表的维护

表和分区的一些维护任务,适用于在mysql5.6的分区表上用sql语句进行。
维护分区表,可以使用支持分区表的语句:CHECK TABLE, OPTIMIZE TABLE, ANALYZE TABLE, and REPAIR TABLE
你可以使用ALTER TABLE的一些扩展来执行这种类型的一个或多个分区。如下:

1.重建分区: 这和先删除保存在分区中的所有记录,然后重新插入它们,具有同样的效果。它可用于整理分区碎片。如:
ALTER TABLE t1 REBUILD PARTITION p0, p1;

2.优化分区:如果从分区中删除了大量的行,或者对一个带有可变长度的行(也就是说,有VARCHAR,BLOB,或TEXT类型的列)作了许多修改,可以使用“ALTER TABLE … OPTIMIZE PARTITION”来收回没有使用的空间,并整理分区数据文件的碎片。如:
ALTER TABLE t1 OPTIMIZE PARTITION p0, p1;

在一个给定的分区表上使用“OPTIMIZE PARTITION”等同于在那个分区上运行CHECK PARTITION,ANALYZE PARTITION,和REPAIR PARTITION。

3.分析分区:读取并保存分区的键分布。如:
ALTER TABLE t1 ANALYZE PARTITION p3;

4.修补分区: 修补被破坏的分区。如:
ALTER TABLE t1 REPAIR PARTITION p0,p1;

5.检查分区: 可以使用几乎与对非分区表使用CHECK TABLE 相同的方式检查分区。如:
ALTER TABLE trb3 CHECK PARTITION p1;

这个命令可以告诉你表t1的分区p1中的数据或索引是否已经被破坏。如果发生了这种情况,使用“ALTER TABLE … REPAIR PARTITION”来修补该分区。
列表中每个语句也支持用关键字ALL 来替代列表中的分区名。如:

ALTER TABLE trb3 CHECK PARTITION ALL;

使用 mysqlcheck 和 myisamchk 是不支持分区表的。

在mysql 5.6中你可以用ALTER TABLE … TRUNCATE PARTITION来截断分区。这个语句可以用来删除一个或多个分区中的所有行,和TRUNCATE TABLE从表中删除所有行的操作方式大致相同。
ALTER TABLE … TRUNCATE PARTITION ALL 截断表中所有的分区。