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

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

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

クリーン ページ: メモリとディスク上のデータが一致しています。ダーティ ページ: メモリとディスク上のデータが一致していません。

ダーティページが表示されるのはなぜですか?

通常、高速更新操作はすべてメモリとログへの書き込みです。
すぐにはディスク データ ページに同期されません。この時点では、メモリ データ ページの内容はディスク データ ページと一致しておらず、これをダーティ ページと呼びます。
これはMySQLのメモリ管理メカニズムに関係する。

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

バッファにはこれら 3 つのカテゴリのリストが含まれています。これらは、LRUList、FreeList、および FlushList です。
データベースを起動したばかりのときは、LRU リストにデータ ページはありません。 FreeList は空きページを保存します。

  • ページを読み取る必要がある場合は、FreeList から空きページが取得され、データを読み取った後、LRUlist に配置されます。
  • FreeList に空きページがない場合、LRU アルゴリズムに従って LRU リストの最後のページが削除されます。
  • LRUlist 内のページが変更されると、そのページはダーティ ページになり、FlushList に追加されます。

注: 現時点では、このページは LRUlist と FlushList の両方に存在します。

要約: LRUList (読み込まれたページを管理) と FreeList (空きページを管理) はページの可用性を管理するために使用されます。FlushList (ダーティ ページを管理) はダーティ ページの更新を管理するために使用されます。

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

バッファのみに頼ってデータの変更や読み取りを行うことは可能ですか?

データの変更と読み取りがメモリ バッファのみに依存している場合、データベースがクラッシュすると、メモリ内のすべてのデータが失われます。そのため、MySQL は前述の redo ログを使用して、異常な再起動後のデータ復旧を実装します。 redo ログの概要については、こちらの記事を参照してください: MySQL-redo ログと binlog

簡単に言えば、異常な再起動後にバッファ内のデータが正常に復元できることを保証するために、バッファを更新する前に REDO ログが書き込まれます。

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

  • 前述のように、データがバッファにのみ保存されている場合、データベースがクラッシュし、メモリデータが失われます。したがって、ディスクにフラッシュする必要があります。
  • REDO ログが無限に大きい場合や、ファイル数が多い場合は、システム内での変更操作が多数発生します。クラッシュが発生すると、回復に非常に長い時間がかかります。

したがって、当然のことながら、メモリ内のダーティ ページを何らかのルールに従ってディスクにリフレッシュする必要があります。リフレッシュ操作により、バッファ サイズの問題と REDO ログ サイズの問題を解決できます。

  • バッファはディスクに保存できるため、無限である必要はありません。
  • 一度ディスクに保存されると、REDO ログ内の対応する部分のデータを解放できるため、REDO ログは無限である必要はありません。

ダーティ ページをフラッシュするシナリオは 4 つあります。

  • REDO ログがいっぱいになると、MySQL はすべての更新操作を一時停止し、ログのこの部分に対応するダーティ ページをディスクに同期します。
  • システム メモリが不足している場合は、一部のデータ ページを削除する必要があります。ダーティ ページを削除する場合は、まずそれらをディスクに同期する必要があります。
  • MySQL はシステムがアイドル状態であると判断すると、機会があればメモリ データをディスクに同期するため、パフォーマンスの問題は発生しません。
  • MySQL が正常にシャットダウンされると、MySQL はメモリ内のすべてのダーティ ページをディスクに同期します。これにより、次回 MySQL を起動したときにディスクから直接データを読み取ることができるため、起動速度が非常に速くなります。パフォーマンス上の問題はありません。

影響

1 REDO ログがいっぱいの場合は、それを回避するようにしてください。そうしないと、システム全体の更新が停止します。このとき、書き込みパフォーマンスは 0 になり、ログの対応するダーティ ページの同期が完了した後にのみ更新を実行できます。これにより、SQL ステートメントの実行が非常に遅くなります。

MySQL ダーティ ページについての説明はこれで終わりです。MySQL ダーティ ページに関するより詳しい情報は、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続きご覧ください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQL フラッシュリストとダーティページフラッシュメカニズム
  • MySQL ダーティ ページ フラッシュとテーブル スペースの縮小の原理の分析

<<:  onfocus="this.blur()" は視覚障害のあるウェブマスターに嫌われている

>>:  CentOS 上の Docker に Jupyter をインストールしてポートを開く方法

推薦する

Linux (CentOS7) で RPM を使用して MySQL 8.0.11 をインストールするチュートリアル

目次1. インストールの準備1. Linux関連情報の表示(Linuxコマンドライン操作) 2. M...

Linux ファイアウォールの状態確認方法の例

Linuxファイアウォールの状態を確認する方法1. 基本操作 # ファイアウォールのステータスを表示...

MySQL は information_schema オブジェクトの付与をバイパスし、ERROR 1044 (4200) エラーを報告します

この質問は、MySQL の権限に関する WeChat グループのネットユーザー間の議論です。次のよう...

Centos7 への mysql8.0rpm のインストール チュートリアル

まず、図をダウンロードしてください 1. まず、centos7に付属しているmariadbをアンイン...

CSS の position 属性の値に関する研究 (概要)

CSS の位​​置属性は要素の配置タイプを指定し、上、下、左、右を使用して要素を具体的に配置します...

nginx を使用して特定のインターフェース (URL) をブロックする方法

1. はじめに場合によっては、Web プラットフォームがオンラインになった後、サービス インターフェ...

最新の高品質な英語無料フォント36個を公開

01. 無限フォントのダウンロード02. バンダフォントのダウンロード03. ロールアップフォントの...

Baidu の https 認証プロンプト「http サイトを 301 から https サイトにリダイレクトしてください」の解決方法の詳細な説明

最近、ウェブサイトを https アクセスに変換したいのですが、すべて完了した後、Baidu Web...

Oracle を MySQL に置き換える際の問題と解決策

目次移行ツールアプリケーション変換mysql8.0 ドライバ パッケージを追加データソース構成の変更...

Zabbixについて管理者ログインパスワードを忘れた場合、パスワードをリセットする

Zabbix 管理者ログイン パスワードのリセットに関する問題は次のとおりです。 1. 問題の説明:...

MySQL トリガーの追加、削除、変更、クエリ操作の例

この記事では、例を使用して、MySQL トリガーの追加、削除、変更、およびクエリ操作について説明しま...

EF (Entity Framework) の挿入または更新データ エラーの解決方法

エラー メッセージ:ストアの更新、挿入、または削除ステートメントが予期しない行数 (0) に影響を与...

Nginx + consul + upsync を使用して動的負荷分散を実現する方法の詳細な説明

目次前提条件DNSドメイン名解決プロセス外部ネットワークマッピングnginxコア知識nginxとはア...