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 フィールドを確認します。想定される警告値より大きい場合は、一度クリーンアップします。 ご質問がありましたら、メッセージを残すか、コミュニティに参加して話し合いましょう。お読みいただきありがとうございます。お役に立てれば幸いです。このサイトをサポートしていただき、ありがとうございます。 以下もご興味があるかもしれません:
|
docker create コマンドは、イメージに基づいてコンテナを作成できます。このコマンドの効果...
この記事はRHEL7.5でのMySQL 8.0.11のインストールチュートリアルを記録しています。具...
% ワイルドカードを使用すると、インデックス失敗の問題が発生することがよくあります。ここでは、lik...
序文デッドロックの本質はリソースの競合です。バッチ挿入の順序が一貫していないと、デッドロックに陥りや...
今日、クライアントが広告を掲載したいのですが、提供された素材は Flash です。私たちはあまり気に...
目次1. 自己列挙可能なプロパティ2. Object.values()はプロパティ値を返します3. ...
プロジェクトを実行すると、リアルタイム更新、広告アニメーションの連続表示などの要件に遭遇することは避...
Docker バージョン: [root@localhost gae_proxy]# docker バ...
1. 基本的な Spring-boot クイックスタート1.1 クイックスタート pom.xml は...
目次プレハブプレハブの作り方プレハブの役割1. 同じタイプのノードをバッチで作成する2. 特定の時間...
コードはさらに合理化できますが、時間の制約があるため、まずはここで投稿して、自分で最適化してメニュー...
Git は vscode に統合されており、git コマンドをいくつか記述しなくても、クリックするだ...
Vue+jsはビデオのフェードインとフェードアウトを実現します。参考までに、具体的な内容は次のとおり...
以前、あるプロジェクトでMysql FIND_IN_SET関数を使用したことがありますが、非常に便利...
私は数年間 vi エディタを使ってきましたが、実用的な用途で使ったことはありませんでした。今日 Py...