2012-04-20 9 views

答えて

2

ALTER TABLEを使用してテーブルに列を追加すると、テーブル全体が再構築される必要があります。これは大きなテーブルでは遅くなります。

あなたはALTERの実行中にテーブルを継続して使用する場合は、あなたはPT-オンライン・スキーマ変更ツールを使用して検討する必要があります。

http://www.percona.com/doc/percona-toolkit/2.1/pt-online-schema-change.html

0

コンパクトなテーブルのMySQLのドキュメントから、それは述べて各レコードのヘッダーには、フィールドがヌルかどうかを示すビットが含まれています。列を追加する場合は、そのヘッダーのサイズを変更する必要があります。少なくともその表のすべての行のサイズを変更します。

抜粋:COMPACT行形式を使用するInnoDBテーブル内 行は、以下の特性を有する:

を各インデックスレコードは可変長ヘッダが先行してもよい5バイトのヘッダを含んでいます。ヘッダーは、連続したレコードをリンクするため、および行レベルのロックでも使用されます。

レコードヘッダーの可変長部分には、NULL列を示すビットベクトルが含まれています。 NULLにできるインデックスの列数がNの場合、ビットベクトルはCEILING(N/8)バイトを占有します。たとえば、NULLになることができる9〜15の列がある場合、ビットベクトルは2バイトを使用します。

関連する問題