1. レビュー MySQL の起動後にバッファ プールが初期化されます。バッファ プールは N 個の空のキャッシュ ページも初期化し、その記述データは LRU リンク リストと FreeList 二重リンク リストに編成されます。 このとき、ディスクからデータ ページを読み取る際には、まず Free List から空いているキャッシュ ページの説明情報を検索し、読み取ったデータ ページをキャッシュ ページにロードします。同時に、キャッシュ ページの説明情報はフリー リストから削除されます。また、説明情報ブロックは LRU リンク リストにも保持されます。 データ ページがバッファー プールにロードされた後、そのデータ ページに対して変更を実行できます。 2. フラッシュリスト クライアントへの応答を高速化するために、MySQL はバッファー プール内のデータを変更しますが、LRU リンク リスト内のキャッシュ ページを変更すると、ページ内のデータはディスク上のデータ ページ情報と一致しなくなります。一般的に、この種のデータ ページはダーティ ページと呼ばれます。 データの最終的な一貫性を確保するために、MySQL はダーティ ページをディスクにフラッシュバックする必要があります。 しかし、問題は、どのデータ ページをディスクにフラッシュバックする必要があるかということです。 これでフラッシュ リストに進みます。 フラッシュ リストはフリー リストと非常によく似ており、どちらもバッファー プール内のデータ記述情報によって編成された双方向リンク リストです。 メモリ内のバッファ ページを変更すると、バッファ ページに対応する説明情報ブロックがフラッシュ リストに追加されます。この方法では、バッファ プールに十分なデータ ページがない場合に、フラッシュ リスト内のダーティ データ ページをディスクに更新することを優先できます。 これまでの記事を読んだことがあれば、LRUList、FreeList、FlushList、バッファー プール、ダーティ ページ、ダーティ データについて知っているはずです。 勝利を目指しましょう!ダーティページドロップの仕組みを見てみましょう 3. ダーティページとは何ですか?ダーティデータとは何ですか? ダーティページとは何ですか? フラッシュ リストを紹介した記事で、ダーティ ページは LRU リンク リストで変更されたキャッシュ ページであると説明しました。これらはディスク上のデータ ページと矛盾しており、ダーティ ページをディスクにフラッシュバックする必要があります。 ダーティデータとは何ですか? この問題は、実際にはダーティ リードという概念につながります。たとえば、トランザクション A はトランザクション B からコミットされていないデータを読み取ります。このデータをダーティ データと呼びます。 4. ダーティページをディスクにフラッシュするタイミング バッファ プールが十分でない場合、MySQL は LRU メカニズムに従って、古いサブリスト部分のキャッシュ ページを LRU リンク リストから移動します。削除されたキャッシュ ページの説明情報がフラッシュ リストにある場合、MySQL はそれをディスクにフラッシュする必要があります。 InnoDB ストレージ エンジンがダーティ ページをディスクにフラッシュバックする機会は数多くあります。これを拡張知識として見ることができます。 1. MySQL データベースが閉じられると、すべてのダーティ データ ページがディスクにフラッシュバックされます。この機能は、パラメータ innodb_fast_shutdown=0 によって制御されます。デフォルトでは、InnoDB はシャットダウンする前にダーティ ページをディスクにフラッシュし、UNDO ログをクリーンアップします。 2. バッファ プール内のページの一定割合を 1 秒ごとまたは 10 秒ごとに非同期的にディスクに更新するバックグラウンド スレッド マスター スレッドがあります。 3. MySQL 5.7 では、バッファ プールはページ クリーナー スレッドによって更新されます。 innodb_page_cleaners パラメータを使用してページ クリーナー スレッドの数を制御できますが、この値をバッファー プールの数よりも大きく調整すると、MySQL は innodb_page_cleaners の数を innodb_buffer_pool_instances の数に自動的に設定します。 5. REDO ログが利用できない場合、ダーティ ページ リスト内のダーティ ページは強制的にディスクに更新されます。このメカニズムもバックグラウンド スレッドによって完了します。 5. ダーティページリフレッシュに関するその他の知識ポイント 隣接するデータ ページを更新します。つまり、MySQL がダーティ ページをディスクに更新すると、そのダーティ ページに隣接するダーティ ページも同様にディスクに更新されます。 このプロセスは、パラメータ innodb_flush_neighbors によって制御できます。
では、どの状態に設定するかをどのように選択するのでしょうか? MySQL インスタンスが配置されているマシンのストレージ タイプに基づいて決定できます。ストレージが HDD の場合、HDD のディスク リフレッシュ レートが低いため、オンにすることをお勧めします。このパラメータをオンにすると、IO 操作を効果的に削減できます。逆に、SSD ストレージを使用する場合は、ディスク IO が高くなるという特性があるため、このパラメータを無効にすることをお勧めします。 上記は、MySQL フラッシュ リストとダーティ ページ ディスク メカニズムの詳細です。MySQL フラッシュ リストとダーティ ページ ディスク メカニズムの詳細については、123WORDPRESS.COM の他の関連記事をご覧ください。 以下もご興味があるかもしれません:
|
<<: HTML iframe と frameset の違い_PowerNode Java Academy
>>: Dockerコンテナが起動直後に終了する問題を解決する
Web アプリケーションの開発とデバッグを行う際には、テストのためにブラウザのキャッシュをクリアした...
この記事では、WeChatアプレットの左右連動を実現するための具体的なコードを参考までに紹介します。...
ステップ1: ディープ「グラフィックドライバー」をインストールするdeepin v20にはデフォルト...
この記事では、Vueの具体的なコードを共有して、シンプルなマーキー効果を実現しています。具体的な内容...
序文ほとんどの方がMySQLとインデックスを使用したことがあると思いますが、適切なインデックスを作成...
1. CSSの記述形式1. インラインスタイルCSSコードを開始タグに直接記述することができます&l...
1.ダウンロードして解凍する1. Zookeeperの紹介分散サービス フレームワークとして、Zoo...
Count(*) または Count(1) または Count([column]) は、おそらく S...
以前、純粋な CSS を使用して波の効果を実現する方法をいくつか紹介しました。それらについては、次の...
この記事では、例を挙げて MySQL のマルチテーブル クエリについて説明します。ご参考までに、詳細...
1. mysql/mysql-server:latestイメージを使用してMySQLインスタンスを素...
グローバルオブジェクトすべてのモジュールは呼び出すことができますglobal: ブラウザの wind...
HTML Web ページ リスト タグの学習チュートリアル。 HTML ページでは、リストはアウトラ...
高性能で軽量なウェブサービスソフトウェアであるNginxについて高い安定性 システムリソースの消費量...
1. 需要3 つのテーブルがあります。一定期間にわたるさまざまな抗生物質感受性の結果、つまり rep...