Skip to content

MS_BufferPoolExtension

nishi_74322014 edited this page Aug 19, 2026 · 1 revision

バッファー プール拡張

概要

補足(原文が空欄のため、要点を補う): Buffer Pool Extension (BPE)
(SQL Server 2014 以降)のこと。
SSD をバッファ プールの延長として使う機能である。

バッファ プールとは

SQL Server は、データ ページをディスクから読んだあと
メモリ上(バッファ プール)にキャッシュする。
ここにヒットすればディスク I/O が発生しないため、
バッファ プールのヒット率が性能を大きく左右する

BPE が挟むもの

【従来】     バッファ プール(RAM) ──── データ ファイル(ディスク)
                                   ↑ ここが遅い

【BPE 有効】 バッファ プール(RAM) ── SSD ── データ ファイル(ディスク)
                                    ↑ 中間層を挟む

RAM に載りきらないページをSSD に退避することで、
「RAM ほど速くないが、ディスクよりは速い」層を作る。

ALTER SERVER CONFIGURATION
SET BUFFER POOL EXTENSION ON
    (FILENAME = 'F:\SSD\ExtensionCache.bpe', SIZE = 32 GB);

効く条件・効かない条件

判定
読み取り中心のワークロード 効く(BPE はクリーン ページのみを保持する)
書き込み中心 効かない(更新済みページは対象外)
RAM が潤沢でヒット率が高い 効かない(そもそも読みに行かない)
RAM が不足していて I/O 待ちが多い 効く可能性がある
データ ファイルが既に SSD 上にある ほぼ意味がない

「更新されたページは置かない」というのが要点で、
だから障害時にデータが失われない
(消えても再読み込みすればよい)。
逆に言えば、書き込み性能の改善には一切ならない。

実務上の位置づけ

登場当時は「RAM は高価、SSD は安い」という前提で意味があったが、
現在は

  • メモリの単価が下がった(RAM を増やす方が素直で効果的)、
  • データ ファイル自体を NVMe SSD に置くのが普通になった
    Azureのディスク ストレージ の Premium SSD 等)、

という事情から、使う場面はかなり限られる
Standard Edition でメモリ上限(128 GB)に達しており、
かつ読み取り中心、という条件が揃った場合の選択肢、という理解でよい。

メモリ最適化データベースエンジン とは名前が似ているが、
解決する問題がまったく違う点に注意。

バッファー プール拡張 In-Memory OLTP
狙い I/O 待ちの削減 ロック / ラッチ競合の解消
対象 既存のテーブルすべて 指定したテーブルのみ(作り直しが必要)
効く症状 メモリ不足による読み込み多発 同時更新でスケールしない

参考

Microsoft Learn


Tags: 移行, データアクセス, SQL Server

NetDevInfraWiki

マイクロソフト系技術情報 Wiki
Open 棟梁 Wiki

(未着手)

開発基盤部会 Wiki

移行管理: DONETODO

Clone this wiki locally