SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

SQL Server 2014 CTP 1 の新機能を使ってみる – バッファプールの拡張 –

leave a comment

今回も Hekaton ではなく他の機能の紹介を。

SQL Server 2014 ではバッファプールを外部ディスクに拡張することができる機能が追加されています。
これにより、SSD やメモリストレージのような高速なドライブをバッファプールの拡張領域として使用することができるようになります。

BOL では Buffer Pool Extension に記載されています。

仕組みに関しては BOL の以下の図がわかりやすいですね。

image

L2 バッファプールの領域としてディスクを使用することが可能となります。
設定は ALTER SERVER CONFIGURATION を使用します。
Edition としては Enterprise x64で使用できるようですね。

新規に BUFFER POOL EXTENSIONS というオプションが追加されており、ON / OFF で有効無効を切り替えることができます。

BUFFER POOL EXTENSION { ON ( FILENAME = ‘os_file_path_and_name’ , SIZE = <size_spec> ) | OFF }

 

実際の構文としては以下のようになります。

ALTER SERVER CONFIGURATION
SET BUFFER POOL EXTENSION ON
(FILENAME = ‘E:SSDCACHEEXAMPLE.BPE’, SIZE = 1GB)

ALTER SERVER CONFIGURATION
SET BUFFER POOL EXTENSION OFF

設定をすると指定したディレクトリに拡張用のファイルが作成されます。
image

なお、設定に関してはレジストリ (HKLMSOFTWAREMicrosoftMicrosoft SQL Server<インスタンスID>MSSQLSERVER) に格納されています。
image

 

設定に関して Max Server Memory の設定値に影響がするようで、Max Server Memory の設定値によって設定可能な最少領域の閾値が変わってきます。
Max Server Memroy と適していないサイズを指定すると以下のようなエラーとなります。

Msg 868, Level 16, State 1, Line 1
Buffer pool extension size must be larger than the current memory allocation threshold 2048 MB. Buffer pool extension is not enabled.

なお、一度設定した後は SQL Server のサービスの再起動をしないと設定したサイズが下限の閾値となります。
サイズを小さくしたい場合などは一度無効にして SQL Server のサービスを再起動する必要があります。

 

サポートとしては Max Server Memory としては 128GB 、バッファプールの拡張は Max Server Memory の 32 倍までとなるようですので、大規模なメモリを搭載している環境では使うことができないようです。
共用環境の SQL Server 設定しておくと、他の利用者のキャッシュによりバッファのキャッシュアウトが発生した場合のオーバーヘッドを減らすことができるのかもしれないですね。

この機能の追加により以下の DMV が追加されています。
sys.dm_os_buffer_pool_extension_configuration (Transact-SQL)
image

既存の DMV / パフォーマンスモニターも拡張されています。
sys.dm_os_buffer_descriptors (Transact-SQL)
Performance counters

以下のようなクエリを実行することで物理メモリ / 拡張領域のどちらにデータが載っているかを確認することができるようになっています。

SELECT
page_type,
is_in_bpool_extension,
COUNT(*) * 8 [Size(KB)]
FROM sys.dm_os_buffer_descriptors
GROUP BY
page_type,
is_in_bpool_extension
ORDER BY is_in_bpool_extension ASC

image

拡張領域の使用状況の詳細についてはパフォーマンスモニターから確認することができます。
imageimage

SSD にデータを置く / メモリの拡張領域として使用するのどちらの方が効果的なのかは検証する必要がありますが面白い機能ですね。

Written by masayuki.ozawa

6月 28th, 2013 at 8:43 am

Posted in SQL Server

Tagged with ,

Leave a Reply

*