この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 3517|答える: 1

[ヒント] [転送] to MySQL Advanced: optimize table コマンド

[リンクをコピー]
掲載地 2023/06/17 11:40:34 | | |
mysqlを使うと、テーブルは多くのデータを削除しますが、データファイルやインデックスファイル自体が異常に小さいことに気づくかもしれません。 これは、mysqlがデータ(特にテキストやBLOB)を削除する際に多くのデータ穴を残し、元のデータの領域を占有するため、ファイルサイズが変わらないためです。 これらの穴は将来的にデータ挿入時に再利用される可能性があり、もちろんそのまま残ることもあります。 この穴はストレージコストを増加させるだけでなく、データの断片化によりテーブルのスキャン効率も低下させます。

使用シナリオ:テーブルの大部分を削除している場合や、VARCHAR、BLOB、TEXTの列を持つ可変長行のテーブルに多くの変更を加えた場合は、OPTIMIZE TABLEを使うべきです。 削除されたレコードはリンクリストに保持され、その後のINSERT操作では古いレコードの位置を再利用します。 OPTIMIZE TABLEを使って未使用の領域を再利用したり、データファイルの断片を整理したりできます。 [ライブラリから大量のデータが削除された場合でも、データファイルサイズが減っていないことに気づくかもしれません。 これは削除操作後にデータファイルに残る断片化が原因です。


ほとんどの環境では、OPTIMIZE TABLEを実行する必要はありません。 可変長の行を頻繁に更新しても、週に1回か月に1回、特定のテーブルだけ頻繁に実行する必要はありません。

最適化テーブルはMyISAM、BDB、InnoDBのテーブルでのみ動作します。

BDBテーブルの場合、OPTIMIZE TABLEは現在ANALYZE TABLEにマッピングされています。 InnoDBテーブルの場合、OPTIMIZE TABLEはALTER TABLEにマッピングされ、ALTER TABLEがテーブルを再構築します。 再構築操作はインデックス統計を更新し、クラスタ化されたインデックスの未使用領域を解放します。

注:MySQLはOPTIMIZE TABLE実行中にテーブルをロックします。

myisamの場合は、最適化テーブルを直接使うことができます table.name。InnoDBエンジンの場合は「Tableは最適化をサポートしていません。代わりにrecreate + analyzeをしてください」と表示され、通常はmyisamからinnodbに変換する場合はalter table table.name engine='innodb'を使い、これを使って最適化にも使えます。したがって、InnoDBエンジンの場合は最適化の代わりにalter table table.name engine='innodb'を使うことができます

前後のエフェクトを見るには、「show table status」コマンド(例えば [データベース]から show table status(例えば '[table_name]' のような)を使えます。 返還結果の中data_freeは、空虚が占める記憶空間です。

MySQLのタイミング付きバッチチェックテーブル修復および最適化テーブル最適化テーブルを実装するシェルスクリプトは以下の通りです。

翻訳元:

ハイパーリンクのログインが見えます。
ハイパーリンクのログインが見えます。




先の:SQLMAP浸透ツールのSQLインジェクションテストをご利用ください
次に:Windowsテスト環境におけるConsulインストールチュートリアル
 地主| 掲載地 2023/07/06 18:54:17 |
--チェックリスト


――テーブルを直せ


-- テーブルの最適化


免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com