MySQLでの生産に影響を与えることなく、大規模なテーブルを削除する方法

MySQLの方法は、一般的に実質的に除去、次の三つの方法があります。

1、削除  

  一般にテーブル内のデータの少量を除去するために使用

  最適化のヒント、WHERE条件を追加してください、と主キーまたは条件が列挙されている場所にインデックスを持っている必要があります。それ以外の場合は、全表スキャンの例があるだろう

2、ドロップ   

  直接テーブルにテーブルとデータのテーブルの定義を含め、削除。

  この操作は、MySQLは、世界的なロックを追加し、削除時の動作をブロックするので、大きなテーブルは、この操作は確かに大きな影響をもたらすだろう

  最適化の提案は、道の切捨て表を検討し、ドロップテーブルの大きなテーブルをこのように使用していません

3、切り捨てます  

  テーブルをドロップする優れたこの方法では、ドロップは、リスク、ロックなし、こんなに早くテーブルを削除する速度よりも小さくなければなりません

  この方法は、高速ではあるが、しかし、IOによって生成された大容量のファイルの削除を検討する必要があります注意してください

 

操作安全なやれやれを示し、次の使用してください!

上記の3つの方法を適用シナリオのそれぞれは、次の表には、大きな欠失を提示し、過負荷のIOリスクをもたらすための方法を回避することができると同時に、大容量のファイルを削除します。

 

1は、ファイルのIDBテーブルへのハードリンクを作成し、実際に保存されているこのファイルのinodeファイルには2つのポイントがあります。ファイルが二つ以上のハードリンクを持っている、ファイルを削除すると、オペレーティングシステムは、唯一の代わりに実際のファイルのハードリンクを削除します

2、テーブルtable_nameをドロップし、これは実際にハードリンクのIBDは、ファイルを削除され、速度は関係なく、ロック操作の、非常に高速になります

3、そのデータファイルがまだそこに実際にあるの後にテーブルからドロップするので、私たちは、ファイルシステム内のファイルを削除する必要があります

4、指定したサイズにファイルを指定するには、TRUNCATEツールを削減するオペレーティングシステムを使用して、私たちは、あなたがIOの使用を制御することができることを意味し、削除ファイルの速度を制御するために、このツールを使用することができます

  ツールの例を切り捨てます。

  

以下のために I    ` 配列    300 - 10  10 `;
 行い
 SLEEP  2 
 TRUNCATE -s {I} $ G /データ/ test.ibd.hardlkが
 DONE 
RM -rf /data/mysql/mytest/erp.ibd.hardlk 
上記のコードが話していますファイル300G 10G、2秒間隔が減少されるたびに、RMの-rfとの最後の残り10Gを除去します。

 

 

おすすめ

転載: www.cnblogs.com/cmgg/p/11511711.html