mysql ダーティページ WAL メカニズムにより、InnoDB はステートメントを更新するときに、書き込みログと呼ばれるディスク操作 (REDO ログ) を作成します。REDO ログはメモリに書き込まれた後、クライアントに返され、更新が成功したことを示します。 メモリ内のデータをディスクに書き込む処理をフラッシュと呼びます。フラッシュ前は、REDO ログに基づいてデータが更新されたがまだ書き込まれておらず、データベースが古いため、実際のデータはデータベース内のデータと一致していません。メモリ データ ページの内容がディスク データ ページと一致していない場合、メモリ ページはダーティ ページと呼ばれます。メモリに書き込まれた後は、一貫性が保たれ、クリーン ページと呼ばれます。 MySQL の動作が時々非常に遅くなる場合は、ダーティ ページがフラッシュされている可能性があります。データベースフラッシュをトリガーするプロセス
そのため、データベースを使用するときに、ダーティ ページの処理が原因でデータベースのパフォーマンスが突然低下することがあります。 ダーティページフラッシュ制御戦略
シナリオ例: データベースが占有する領域が大きすぎるため、最大のテーブルのデータの半分が削除されますが、テーブルのサイズは変更されません。 データ削除プロセス R4 を削除する場合、InnoDB エンジンはレコード R4 のみを削除済みとしてマークします。後で ID が 300 から 600 のレコードが追加された場合、この位置は再利用されますが、ディスク ファイルのサイズは縮小されません。 データ ページ上のすべてのレコードが削除された場合、データ ページを再利用できます。 注: データ ページの再利用はレコードの再利用とは異なります。
データフローを挿入 データがインデックス順に挿入されると、インデックスはコンパクトになりますが、ランダムに挿入されると、インデックス データ ページのページングが発生します。 ページA がすでにいっぱいの場合、別のデータ行を挿入するとどうなるでしょうか? A がいっぱいなので、ID 550 のデータを挿入すると、データを保存するために新しいページ pageB が要求されます。分割が完了すると、pageA の最後に穴が残ります。 インデックスの値を更新すると、古い値が削除され、新しい値が挿入されるため、これも穴が発生します。 縮小する空間 テーブル A と同じ構造を持つ新しいテーブル B を作成します。テーブル A から主キー ID の昇順で 1 行ずつデータを読み取り、テーブル B に挿入します。テーブル B に穴がなくなり、データ ページの使用率が高くなります。テーブル B を一時テーブルとして使用する場合、テーブル A から B にデータをインポートした後、A を B に置き換えます。これにより、A も実質的に縮小されます。 DDL プロセス全体を通じてテーブル A を更新できないため、この DDL はオンラインではありません。バージョン 5.6 以降では、プロセスが変更されました。 一時ファイルを作成し、A 内のすべてのデータ ページをスキャンします。 データページ内のAのレコードを使用してB+ツリーを生成し、一時ファイルに保存します。 Aのすべての操作をログファイルに記録する 一時ファイルが生成された後、ログ ファイルの操作が一時ファイルに適用され、表 A と同じ論理データを持つデータ ファイルが得られます。 テーブルAのデータファイルを一時ファイルに置き換える アイコン 図 3 のプロセスとの違いは、ログ ファイルの記録と再生操作機能が存在するため、このソリューションでは、テーブルを再構築するプロセス中にテーブル A に対する追加、削除、および変更操作が可能になる点です。 テーブルを再構築するには、alter table A engine=InnoDB コマンドを使用します。 MySQL 5.5 より前では、このコマンドの実行プロセスは上記で説明したものと似ています。唯一の違いは、一時テーブル B を自分で作成する必要がないことです。MySQL は、データの転送、テーブル名の交換、古いテーブルの削除などの操作を自動的に完了します。 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
1. それは何ですか? MySQL は最も人気のあるリレーショナル データベース管理システムです。W...
1. まず、コンピュータのデスクトップにある VMware アイコンをダブルクリックしてソフトウェア...
目次1. はじめに2. コードの実装2.1 目的分析2.2 実装プロセス2.2.1 エントリーコード...
カリで再現まず、必要なvim.basicファイルにsuid権限を設定します。 chmod u+s /...
凡例コンポーネントは、ECharts でよく使用されるコンポーネントです。シリーズ マーカーの名前を...
目次1. データベースの使用を選択2. 情報を表示する3. テーブルを作成する4. データを挿入する...
Python 3のインストール1. 依存環境をインストールするPython3 はインストール プロセ...
無線インタラクションにずっと興味があったので、今回は実践してみようと思います〜この分析と評価は iO...
MySQL をインストールすると初期パスワードが与えられますが、この初期パスワードは大文字と小文字の...
Python バージョンを確認します (python -V)。2.7 未満の場合は、アップグレードす...
これまでにも Docker 環境でいくつかのプロジェクトを実行したことはありますが、まだイメージをよ...
目次1. Dockerの設定2. レジストリとネットワークを作成する3. コンテナを起動する環境説明...
序文Windows では、各インスタンスに適切なパラメータを使用してコマンド ラインから複数の My...
CSS3 パターン ギャラリーこの CSS3 パターン ライブラリには、純粋な CSS3 を使用して...
目次Vue 再帰コンポーネントドラッグイベント最近、Vue を使用して、ドラッグ可能なツリー構造図と...