がENGINE=InnoDB
?? ...
テーブルの別のコピー用ディスクに十分な空き領域がない場合で、タスクは、第二のサーバの助けを借りずに行うことはできません。いくつかのテーブルを落とせますか?そうでなければスペースを解放しますか?
PRIMARY KEY
はUNIQUE
であり、インデックスである。 bar
とbaz
の組み合わせが一意でない場合は、PKに変換しないでください。
PKを使用して1行を検索する方が、2次インデックスを使用するよりも高速です。これは、最初にセカンダリインデックスのBTreeの行を検索するためです。そこで、PRIMARY KEY
が見つかり、データのBTreeの行を見つけるために使用されます。
テーブルがinnodb_buffer_pool_size
より大きい場合、変更によっても(多くの場合)ディスクヒットがなくなります。 (ディスクヒットはデータベース操作の中で最も遅い部分です)
はい、現在、あなたのテーブルにはPRIMARY KEY
があります。それは6バイトの隠れた「列」です。あなたのALTER
はそれを捨てて、テーブルを少し小さくします(別の小さなメリット)。
innodb_file_per_table=ON
(または= 1)をお持ちですか?テーブルが独自の.ibdファイルにある場合は、操作後にディスクスペースをリカバリします(まったく実行できると仮定して)。 OFF
を指定すると、ibdata1
ファイルのサイズは大きくなりますが、ファイルサイズは縮小されません。 最終的に 'ビッグ'になるテーブルを作成するときにはON
になります。
OK、そこには、が希望です。 OFF
、およびで実行している場合は、十分な空き領域がibdata1
にある場合は、タスクが完了することがあります。 (しかし、それはあなたがすでにibdata1を膨らませていることを意味しています。)
'qux'は'(bar、baz) 'のインデックスの '名前'ですか? –