3

Mysql 5.5 ..+INNODBとWindowsサーバーを使用しています。

ケース(単純にして実際のケースにする):

名前new_carcarテーブル1GBの2つのテーブル1GBがあります。

手動ではなく10時間ごとにcarテーブルをテーブルに置き換えます(コードによる自動)-高速に行うことが重要です(実際のWebサイトデータ)。new_car

私は読んだ(innodbに問題をドロップすると言う):http ://www.mysqlperformanceblog.com/2011/02/03/performance-problem-with-innodb-and-drop-table/

解決策1:

DROP TABLE car;
RENAME TABLE new_car TO car;

Solution2(最後にドロップを作成します-ドロップ中に発生するアクセスへのテーブルをブロックしない可能性があります):

RENAME TABLE car TO temp_car;
RENAME TABLE new_car TO car;
DROP TABLE temp_car;

Solution3(テーブルの削除を高速で切り捨て、空のテーブルを作成してから、アクションをドロップするのは非常に高速である必要があります):

TRUNCATE TABLE car;
DROP TABLE car;
RENAME TABLE new_car TO car; 

解決策4:

RENAME TABLE car TO temp_car;
RENAME TABLE new_car TO car;
TRUNCATE TABLE temp_car;
DROP TABLE temp_car;

どのソリューションが最適で、なぜですか、それとも他のより良いソリューションを書いてください。

ありがとう

4

4 に答える 4

5

なぜあなたがテーブルを落とすのか分かりません。あなたは常にそれらの2つのテーブルが必要であり、あなたはそうするでしょう(私はNew_Carテーブルを補充していると思います...

RENAME TABLE car TO temp_car;
RENAME TABLE new_car TO car;
TRUNCATE TABLE temp_car;
RENAME TABLE temp_car TO new_car;
于 2012-10-12T15:34:32.057 に答える
0
RENAME TABLE car TO temp_car, new_car TO car;
TRUNCATE TABLE temp_car;
DROP TABLE temp_car;
于 2014-01-14T00:24:51.613 に答える
0

RENAME TABLEのドキュメントで説明されているように:

RENAME TABLEは、1つ以上のテーブルの名前を変更します。名前の変更操作は左から右に実行されます。

名前の変更のために複数のクエリを実行する代わりに、次のように1つのクエリで複数のテーブルの名前変更を実行できます。

RENAME TABLE car TO temp_car, new_car TO car
DROP TABLE temp_car

ただし、このようなテーブルの名前変更により、数秒間ロック/遅延の問題が発生する可能性があることに注意してください。それが許容できるかどうかは、アプリケーションによって異なります。

于 2019-10-03T20:16:01.730 に答える
-1

置換を使用する5分ほどかかるか、ファイルの読み込みを使用して一括処理します

于 2014-01-10T20:58:35.367 に答える