いくつかのテーブルおよびパーティション保守タスクは、MySQL 5.6 のパーティション化されたテーブルでそのような目的を実現するための SQL ステートメントを使用して実行できます。
パーティション化されたテーブルのテーブル保守は、パーティション化されたテーブルでサポートされる CHECK TABLE
、OPTIMIZE TABLE
、ANALYZE TABLE
、および REPAIR TABLE
ステートメントを使用して実現できます。
次のリストで説明しているように、ALTER TABLE
へのいくつかの拡張を使用して、1 つ以上のパーティションに対してこのタイプの操作を直接実行できます。
-
パーティションの再構築 パーティションを再構築します。これは、パーティションに格納されているすべてのレコードを削除してからそれらを再度挿入することと同じ効果があります。これはデフラグに役立つことがあります。
例:
ALTER TABLE t1 REBUILD PARTITION p0, p1;
-
パーティションの最適化 パーティションから多数の行を削除した場合、または可変長行を持つ (つまり、
VARCHAR
、BLOB
、またはTEXT
カラムを持つ) パーティション化されたテーブルに多くの変更を行なった場合は、ALTER TABLE ... OPTIMIZE PARTITION
を使用して、未使用領域を解放したりパーティションデータファイルをデフラグしたりできます。例:
ALTER TABLE t1 OPTIMIZE PARTITION p0, p1;
指定されたパーティションに
OPTIMIZE PARTITION
を使用することは、そのパーティションにCHECK PARTITION
、ANALYZE PARTITION
、およびREPAIR PARTITION
を実行することと同等です。一部の MySQL ストレージエンジン (
InnoDB
を含む) は、パーティションごとの最適化をサポートしません。これらの場合は、ALTER TABLE ... OPTIMIZE PARTITION
がテーブル全体を再構築されます。MySQL 5.6.9 以降では、そのようなテーブルでこのステートメントを実行すると、テーブル全体が再構築および分析され、該当する警告が発行されます (Bug #11751825、Bug #42822)。この問題を回避するには、代わりにALTER TABLE ... REBUILD PARTITION
およびALTER TABLE ... ANALYZE PARTITION
を使用してください。 -
パーティションの分析 これは、パーティションのキー分布を読み取って格納します。
例:
ALTER TABLE t1 ANALYZE PARTITION p3;
-
パーティションの修復 これは、破損したパーティションを修復します。
例:
ALTER TABLE t1 REPAIR PARTITION p0,p1;
-
パーティションのチェック パーティション化されていないテーブルで
CHECK TABLE
を使用できるのとほぼ同様に、パーティションのエラーをチェックできます。例:
ALTER TABLE trb3 CHECK PARTITION p1;
このコマンドは、テーブル
t1
のパーティションp1
のデータまたはインデックスが破損しているかどうかを通知します。その場合は、ALTER TABLE ... REPAIR PARTITION
を使用してパーティションを修復してください。
上記のリストの各ステートメントでは、パーティション名のリストの代わりにキーワード ALL
もサポートされます。ALL
を使用すると、テーブル内のすべてのパーティションにステートメントが作用します。
パーティション化されたテーブルでは mysqlcheck および myisamchk の使用はサポートされません。
MySQL 5.6 では、ALTER TABLE ... TRUNCATE PARTITION
を使用してパーティションを切り捨てることもできます。このステートメントは、TRUNCATE TABLE
がテーブルからすべての行を削除するのとほぼ同様に、1 つ以上のパーティションからすべての行を削除するために使用できます。
ALTER TABLE ... TRUNCATE PARTITION ALL
はテーブル内のすべてのパーティションを切り捨てます。
ANALYZE
、CHECK
、OPTIMIZE
、REBUILD
、REPAIR
、および TRUNCATE
操作は、サブパーティションではサポートされません。