追加コスト 0 で行う SQL Server のパフォーマンス改善・ボトルネック解消 その7 | 野良エンジニアの足跡

追加コスト 0 で行う SQL Server のパフォーマンス改善・ボトルネック解消 その7

こんにちは、nagino です。


SQL Server のメモリの使用方法について、ちょっとした基礎知識と、パフォーマンスの側面についてです。


SQL Server は、デフォルトではメモリをどんどんと使用していきます。

OS から見てメモリ不足にならない限りは、一度使用したメモリも開放しません。

これはデータベースのファイルと同じ考え方で、メモリ取得・開放の処理のオーバーヘッドを避けるためです。


このため、SQL Server を稼動している OS では、SQL Server に処理を行わせるとどんどんと空きメモリが減っていき、以後負荷をかけていない状態でも空きメモリが数 MB という状態が続きます。


一方、OS は OS でページファイルを利用した仮想メモリの仕組みがあります。

サーバー OS の場合はサイズ固定で小さくしていることも多いかと思います。

ですが、SQL Server と他のサービスやアプリケーション(例えば IIS など)を同居させていると、SQL Server がメモリの開放に積極的で無いため、他のサービスやアプリケーションがスワップすることがあります。

こうなるとサーバ全体としてパフォーマンスが劣化します。


ですので、他のサービスやアプリケーションが同居しているサーバーでスワップが顕著に見られるサーバーでは、SQL Server のメモリ使用量の最大値を設定することで制限したほうが良いことがあります。