ホームページ  >  記事  >  バックエンド開発  >  mysql テーブルの断片化の原因を分析し、それらをクリーニングする_PHP チュートリアル

mysql テーブルの断片化の原因を分析し、それらをクリーニングする_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:04:331048ブラウズ

大量のデータを削除すると、必然的にデータ ファイル内に不連続な空白スペースが作成され、データを挿入するときにその空白スペースが使用されます。
ストレージエンジンが異なれば、最適化の方法も異なります。
myisam
は次の方法で実行できます:
mysql> 'testusers'G
***************のようなテストからのテーブルステータスを表示します。 *** ********* 1. 行 ***************************
....
行: 3
Avg_row_length : 45
Data_free: 40
....
途中で削除したため空白が残ってしまいました
mysql>optimize table testusers;
+---------- ------ +----------+----------+----------+
| メッセージ タイプ |
+---- ------------+----------+----------+--------- -+
| テストユーザー |
+----------------+----------+----- ----+- --------+
セット内の 1 行 (0.00 秒)
mysql> 'testusers'G のようなテストからのテーブルのステータスを表示します
********* ********* ************ 1. 行 ************************** *
...
Rows: 3
Avg_row_length: 32
Data_length: 96
Data_free: 0
セット内の 1 行 (0.00 秒)
最適化後、Data_free は 0 になりました。断片化されたデータはクリアされます。
次のメソッドも使用できます。効果は optimize と同じです
./bin/mysqlcheck -uroot -proot --socket=./tmp/mysql.sock -o test testusers
innodb
innodb の場合は、optimize を使用します。mysqlcheck も mysqlcheck も機能しません。小さなテーブルの場合は、ALTER TABLE table_name を直接使用します。この方法は、長期的なテーブルのロックを引き起こすため、大きなテーブルには直接使用できません。データを転送するには、新しいテーブルを作成し、古いテーブルを削除して、テーブルの名前を変更します。

innodb テーブルスペース情報を表示できる Python もあり、オンラインで見つけることができ、Python で書かれています。


http://www.bkjia.com/PHPjc/327756.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/327756.html技術記事大量のデータを削除すると、必然的にデータ ファイル内に不連続な空白スペースが作成され、データを挿入するときにその空白スペースが使用されます。 さまざまなストレージ エンジンのデフラグ...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。