0

テーブルの 1 つでメンテナンス タスクを完了したところ、1 GB のオーバーヘッドが発生しました。

テーブル操作は何時間も実行されるため (レコードの 40% を削除し、4 時間かかりました)、OPTIMIZE テーブル コマンドでデータベースを何時間もロックしたくないので、このオーバーヘッドを処理して最適な方法で削除する方法を探しています。方法。

テーブル自体は 3GB で、204 705 レコードがあります。

4

2 に答える 2

1

テーブルにトリガーがないと仮定すると、オンラインOPTIMIZEを実行する簡単な方法の1つは、pt-online-schema-changeを使用してテーブルを再構築することです。これはMyISAMテーブルであると言ったので、エンジンをMyISAMに設定するだけで、何も変更せずに再構築を実行できます。

pt-online-schema-change --alter "ENGINE=MyISAM" D=your_schema,t=your_table
于 2012-07-16T14:26:12.787 に答える
0

以下を実行する6分間のプロセスで、この問題を回避できました。

CREATE TABLE table_reduced LIKE table;
ALTER TABLE table_reduced DISABLE KEYS;

insert into table_reduced
SELECT 
    *
FROM
    table;

ALTER TABLE table_reduced ENABLE KEYS;

RENAME TABLE table TO table_old;
RENAME TABLE table_reduced TO table;

DROP TABLE `table_old`;
于 2012-07-17T06:58:59.623 に答える