InnoDB のバッファ プール、フリー リンク リスト、フラッシュ リンク リスト

バッファプール

InnoDB のデータはディスクに保存されますが、ディスクの読み取りと書き込みは非常に遅いため、レコードにアクセスする場合、データのページ全体 (デフォルト サイズ 16KB) がメモリ、つまりバッファー プール (バッファー プール) に読み込まれます。デフォルトのサイズは 128MB です。

自由連結リスト(自由連結リスト)

フリー バッファ ページの制御ブロックをリンク リストに接続します。ページがディスクからバッファ プールにロードされるたびに、フリー リストから制御ブロックが検出され、削除されます。バッファー プールで使用されるハッシュ テーブル テクノロジがページにあるかどうかを確認します。

フラッシュリスト

バッファ プール内の特定のデータを変更すると、ディスク内のデータと矛盾することになります。これをダーティ ページと呼びます。ディスク IO で多くの時間を浪費するため、すぐに更新を行いませんが、代わりに、将来のある時点で均一な更新を行います。このとき、更新が必要なダーティ ページを維持する必要があるため、フラッシュ リストを使用して、ダーティ ページを格納するバッファ ページのすべての制御ブロックを接続します。

LRU リスト

バッファ プールがいっぱいになると、いくつかのバッファ ページを解放する必要があります. LRU アルゴリズムは、長期間使用されていないバッファ ページを解放することを選択します. 特定のメンテナンス プロセス: リンクされたリストの先頭は、最近使用されたものですポイント、データにアクセスするとき、データがすでにバッファプールにある場合は、その制御ブロックをリンクリストの先頭に調整します。その制御ブロックを LRU リンク リストに追加し、先頭に配置します。バッファ プールに空き領域がない場合、リンク リストの最後でバッファ ページを解放します。ダーティ ページをディスクにフラッシュします。ダーティ ページをディスクにフラッシュする役割を担うスレッドがバックグラウンドにあります。

おすすめ

転載: blog.csdn.net/hesorchen/article/details/124012707