MySQL でテーブルスペースの断片化を解消する詳細な例 断片化の原因 (1)テーブルのストレージは断片化されます。行が削除されるたびに、スペースが空になり、空のままになります。一定期間にわたって多数の削除操作が行われると、空のスペースがテーブルの内容を格納するために使用されるスペースよりも大きくなります。 (2)挿入操作を実行する場合、MySQLは空き領域を使用しようとします。ただし、空き領域が適切なサイズのデータで占有されていない場合、空き領域を完全に占有することができず、断片化が発生します。 (3)MySQLがデータをスキャンする際、実際にはテーブルの容量要件の上限、つまりデータが書き込まれる領域のピーク部分をスキャンします。 例えば: テーブルには 10,000 行あり、各行は 10 バイトで、100,000 バイトのストレージ スペースを占有します。削除操作を実行すると、1 行のみが残り、実際のコンテンツは 10 バイトのみになります。ただし、MySQL がそれを読み取ると、100,000 バイトのテーブルとして扱われます。したがって、フラグメントの数が多いほど、クエリのパフォーマンスに影響します。 テーブルフラグメントのサイズを確認する (1)テーブルのフラグメントサイズを確認する mysql> SHOW TABLE STATUS LIKE 'テーブル名'; 結果の「Data_free」列の値はフラグメントサイズです。 (2)断片化されたテーブルを全てリストする mysql> table_schema db、table_name、data_free、engine を選択 information_schema.tables から table_schema が ('information_schema', 'mysql') に含まれず、data_free > 0 の場合; テーブルの断片化を解消 (1)MyISAMテーブル mysql> テーブルテーブル名を最適化する (2)InnoDBテーブル mysql> テーブル名を変更する エンジン = InnoDB OPTIMIZE の動作はエンジンによって異なります。MyISAM はインデックスとデータが分離されているため、OPTIMIZE はデータ ファイルをソートし、インデックスを再配置することができます。 OPTIMIZE 操作はテーブルを一時的にロックし、データ量が多いほど時間がかかります。結局のところ、単純なクエリ操作ではありません。したがって、プログラムに Optimize コマンドを配置するのは適切ではありません。ヒット率をどれだけ低く設定しても、アクセス回数が増えると、全体のヒット率も増加し、プログラムの実行効率に大きな影響を与えることは間違いありません。より良い方法は、シェルを作成し、mysql のinformation_schema.TABLESフィールドを定期的にチェックし、DATA_FREE フィールドをチェックすることです。0 より大きい場合は、断片化があることを意味します。 提案 クリア操作により、テーブルが一時的にロックされます。データ量が多いほど、時間がかかります。スクリプトを作成し、アクセスが少ない時間帯に定期的に実行することができます。たとえば、毎週水曜日の夜明けに DATA_FREE フィールドを確認します。想定される警告値より大きい場合は、一度クリーンアップします。 ご質問がありましたら、メッセージを残すか、コミュニティに参加して話し合いましょう。お読みいただきありがとうございます。お役に立てれば幸いです。このサイトをサポートしていただき、ありがとうございます。 以下もご興味があるかもしれません:
|
この記事では、例を使用して MySQL 変数の使用方法を説明します。ご参考までに、詳細は以下の通りで...
私は今日、mybatis を学び、データベースに対していくつかの簡単な追加、削除、変更、クエリを実行...
この記事ではJavaScript検索のデータ表示コードを参考までに共有します。具体的な内容は以下のと...
導入Alibaba Cloud のような OSS ストレージ サービスを使用している場合は、サービス...
くさびコンピュータにインストールされている MySQL のバージョンが比較的古く、おそらくバージョン...
成果を達成する コードhtml <div class="css-slideshow&...
現在、クラウドサーバーに nginx をインストールする際、最初に zlib などの依存ライブラリを...
目次1. Redis Dockerベースイメージを作成する2. Redisノードイメージを作成する3...
<br />多くのウェブサイト デザイナーが犯す最も一般的な間違いは、ウェブページが I...
序文: MySQL で SQL 文を実行すると、予想した時間内に文が完了しません。このような場合、通...
JavaScript 入門JavaScript は軽量なインタープリタ型の Web 開発言語です。言...
目次1. 実行コンテキストとは何か2. 実行コンテキスト スタックとは何ですか? 3. 実行コンテキ...
よくある質問から議論を始めましょう。CSS を使用して要素の高さを [ブラウザ コンテンツ ウィンド...
KVM はカーネルベースの仮想マシンの略で、Linux をハイパーバイザーに変換する Linux ...
この記事の例では、クリックして切り替える機能を実装するためのJavaScriptの具体的なコードを参...