ホームページ  >  記事  >  データベース  >  mysql ダーティ ページとは何ですか?

mysql ダーティ ページとは何ですか?

青灯夜游
青灯夜游オリジナル
2023-04-14 10:41:301521ブラウズ

mysqlでは、メモリデータページとディスクデータページの内容が矛盾している場合、そのメモリページをダーティページと呼びます。ダーティ ページをフラッシュするシナリオ: 1. REDO ログがいっぱいになると、MySQL はすべての更新操作を一時停止し、ログのこの部分に対応するダーティ ページをディスクに同期します; 2. システム メモリが不十分な場合、一部のデータ ページは削除された場合 ダーティ ページがダーティ ページの場合は、まずダーティ ページをディスクに同期する必要があります; 3. MySQL は、システムがアイドル状態のときに、機会があればメモリ データをディスクに同期すると考えます。この場合、パフォーマンス上の問題はありません。

mysql ダーティ ページとは何ですか?

このチュートリアルの動作環境: Windows7 システム、mysql8 バージョン、Dell G3 コンピューター。

ダーティ ページ (メモリ ページ)

  • クリーン ページ: メモリとディスクのデータは一致しています
  • ダーティ ページ: メモリとディスクのデータは一致していますメモリとディスク データに一貫性がない

ダーティ ページが表示される理由

通常、高速な更新操作はすべてメモリとログへの書き込みです。 をディスク データ ページにすぐに同期するわけではありません。このとき、メモリ データ ページとディスク データ ページの内容が不一致になります。これを ダーティ ページ と呼びます。

これには、mysql のメモリ管理メカニズムが関係します。

メモリ管理メカニズムの簡単な説明

バッファには、これら 3 つのカテゴリのリストが含まれています。それらは、

LRUListFreeListFlushListです。

データベースが最初に起動されたとき、LRUlist には

データ ページ が存在しません。 FreeList には空きページが保存されます。

    ページを読み込む必要がある場合は、FreeListから空きページを取得し、データを読み込んだ後、LRUlistに入れます。 FreeList では、LRU アルゴリズムに従って LRU リストの最後のページが削除されます。
  • LRU リストのページが変更されると、そのページはダーティ ページになり、このページも FlushList に追加されます。
  • 注: 現時点では、このページは LRUlist と FlushList の両方に含まれています。

概要: LRUList (読み取られたページの管理) と FreeList (空きページの管理) はページの可用性の管理に使用され、FlushList (ダーティ ページの管理) はダーティ ページの更新の管理に使用されます

ダーティ ページ データをディスクに同期するプロセス中に、SQL ステートメントがディスク データ ページで実行された場合。実行速度が遅くなります。

#データの変更と読み取りがバッファにのみ依存しても問題ありませんか?

データの変更と読み取りがメモリ バッファにのみ依存する場合、データベースがダウンすると、メモリ内のデータが失われます。したがって、MySQL は前述の REDO ログを使用して、異常な再起動後のデータ回復を実現します。 簡単に言うと、バッファを更新する前に、まず REDO ログを書き込んで、異常な再起動後にバッファ内のデータが正常に復元できることを確認します。

ダーティ ページを更新する必要がある理由

データはバッファにのみ配置されると上で述べましたが、データベースのダウンタイムとメモリ データは損失#が発生します。##。したがって、ディスクにフラッシュする必要があります。

    REDO ログが無限に大きい場合、またはファイル数が多い場合、システム内で多数の変更操作が行われるため、システムがダウンすると回復時間が非常に長くなります。
  • したがって、必然的に、特定のルールに従って、メモリ内のダーティ ページをディスクに
  • リフレッシュする必要があります。リフレッシュ操作では、バッファ サイズの問題とやり直しの問題が発生します。ログサイズの問題を解決できます。
バッファはディスクに永続化できるため、無限である必要はありません。

REDO ログは、一度ディスクに永続化されるため、無限である必要はありません。ディスクにある場合、対応する REDO ログのデータのその部分を解放できます。

  • ダーティ ページをブラッシングするには次の 4 つのシナリオがあります。

redo ログがいっぱいの場合 、mysql

すべての更新
    操作を一時停止し、ログのこの部分に対応する
  • ダーティ ページをディスク

    に同期します。 システムメモリが不足している場合は、一部のデータ ページを

    削除する必要があります。削除するには、
  • まずダーティ ページをディスクに同期します
  • MySQL は、システムが アイドル状態の場合、機会があれば メモリ データをディスクに 同期すると考えます。この場合、パフォーマンスに問題はありません。

  • MySQL は正常にシャットダウンします

    、MySQL は メモリ内のすべてのダーティ ページをディスク に同期します。これにより、次回 MySQL が起動するときに、データがディスクから直接読み取るため、起動速度が非常に速くなります。これによるパフォーマンスの問題はありません。

  • それが引き起こす影響

    REDO ログがいっぱいの場合

  • 回避してください
redo ログは

で埋められています。そうしないと、システム全体のアップデートが停止します。 このとき、書き込みパフォーマンスは 0 となり、ログに対応する

ダーティ ページの同期が完了するまで待たなければ更新できません。これにより、SQL ステートメントが実行されます。とても遅くなる。

[関連する推奨事項: mysql ビデオ チュートリアル

]

以上がmysql ダーティ ページとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。