Shoeisha Technology Media

EnterpriseZine(エンタープライズジン)

EnterpriseZine(エンタープライズジン)

テーマ別に探す

Denali のメモリ管理(後編)

2011/09/20 00:00

前回SQL Server 2008 R2 までのメモリ管理についてご紹介しましたが、今回はDenaliでのメモリ管理についてご紹介します。

メモリマネージャの役割

 Denali以前のメモリの獲得や内部コンポーネントへの割り当てなどの主要なメモリ管理は、バッファ プールとMulti Page Allocatorによっておこなわれていました。Denaliでは新しいメモリマネージャがその役割をもつようになります。バッファプールはメモリマネージャのクライアントになり、バッファ プールの役割のひとつであったメモリ管理の機能の多くはメモリマネージャに移行されました。そのため、バッファプールは本来のデータベースの情報のI/Oを管理するコンポーネントとなるのです。

 また8KBと8KBを超える場合のメモリの獲得は異なるメカニズムで行われていましたが、新しいメモリマネージャによって1つのメカニズムで行われるようになります。この変更によってSQL Serverが獲得する全てのメモリを‘max server memory’で制御できるようになりました。

 Denaliでは内部コンポーネントがメモリマネージャにメモリの要求をおこなうと、Workspaceからメモリの割り当てが行われます。Workspaceには複数のFixed size block Allocatorコンポーネントがあり、要求したメモリサイズに応じてFixed size block Allocator が選択されます。また、Workspaceはバッファプール用やキャッシュ用など様々な種類があり、それぞれの WorkspaceがもつFixed size block Allocatorのメモリ サイズや数は、Workspaceの種類や32bitと64bitのアーキテクチャで異なります。


著者プロフィール

  • 坂輪貴行(サカワ タカユキ)

      日本マイクロソフトの Premier Field Engineering 部にて、SQL Server ユーザーの支援を行う。前職はシステム エンジニアであり、長く Sybase を使用したプロジェクトに従事。業界歴 14 年の月一ゴルファー。

バックナンバー

連載:あたらしいSQL Server/Denaliの世界

もっと読む

All contents copyright © 2007-2017 Shoeisha Co., Ltd. All rights reserved. ver.1.5