[MySQLは]大きなテーブルを削除するためにハードリンクの方法を使用します

イントロ

MySQLは、大きなテーブルを削除する場合は直接使用する場合には、drop table道のは削除、でも全体のインスタンスのインスタンスは、ライブラム作る影響があるかもしれません。あなたが途中でテーブルへのハードリンクを削除することができますので、最小限に本番環境への影響になります。

ドロップテーブルプロセス

  1. 持有プールミューテックスをバッファと
  2. フラッシュリストミューテックスで保持バッファ・プール。
  3. スキャン開始LRUリスト:
    1. 汚れたページがドロップテーブルに属している場合、LRUリストから削除。
    2. 番号が削除されたページを超える場合はdefine buf_lru_drop_search_size 1024、その後、pthread_yield CPUタイムスライスが発表し、強制的にOSのコンテキストスイッチと、バッファプールミューテックスとフラッシュリストミューテックスを解放します。
    3. ReはLRUヘッダまで、LRUリストをトラバースし続け、バッファプールミューテックスおよびフラッシュリストミューテックスを保持しています。
  4. フラッシュリストミューテックスをリリース。
  5. リリースは、プールミューテックスをバッファリングします。
  6. 繰り返して再び上記の手順1-5、1-5しかし、繰り返し実行を汚れたページを削除することで、バッファプールの削除は、クリーンなページです。

図の簡単なポイントは、全体のプロセスは以下のように簡略化することができます。

  1. 获取プールミューテックス和フラッシュリストミューテックスをバッファリングします。
  2. 尾が始まったからLRUチェーンを通過します。
  3. それは汚れのページであれば、汚れたページは、クリーンページへのセット、およびフラッシュリストから削除されます。
  4. そして、第二のパスLRU、フリーリストに移動するからLRUページ。
  5. 释放プールミューテックス和フラッシュリストミューテックスをバッファリングします。

バッファプールミューテックスおよびフラッシュリストミューテックスを保持し、テーブルを削除するプロセス全体を通して、全体のバッファプールは比較的大きい、またはテーブルがより多くのダーティページを持っている場合、次いで、他のトランザクションで、その結果、ロック時間が長くなります保持している場合それらがブロックされたバッファー・プールに、ビューの現象は、このインスタンスが、ライブ追突されています。

テーブルを削除するにはハードリンク

 1.メインライブラリーとハード・リンク・ライブラリーからのテーブルの確立

ln table_1.ibd table_1.ibd.hdlk
ln table_1.frm table_1.frm.hdlk

 マスター・ライブラリー2.ドロップテーブル

drop table table_1;

 物理層OS 3. [ファイルの削除

rm table_1.ibd.hdlk
rm table_1.frm.hdlk

 4. 500GへのTBまたは式は、TRUNCATEコマンドによって切り捨て削除することができた場合

truncate -s 2G table_1.ibd.hdlk

おすすめ

転載: www.cnblogs.com/haohaozhang/p/12236174.html