検索
連載

DB管理者がいますぐ確認すべき3つの設定真・Dr. K's SQL Serverチューニング研修(4)(1/3 ページ)

SQLをうまく書くことだけがチューニングではありません。まずは、この3つの設定をチェックすることからはじめよう(編集部)

PC用表示 関連情報
Share
Tweet
LINE
Hatena

管理者の力量があらわれる3つの設定

 前回、設定された値を見るだけでDB管理者の力量が見える、ということに触れました。今回も必ず押さえておきたいパラメータを、なぜそのように設定すべきかという理由と併せて解説していきます。

 設定すべきポイントは大変シンプルです。

  1. tempdbの数をCPUコア数にあわせよ
  2. x64環境なら「メモリ内のページロック指定」を変えよ
  3. OLTP環境では、並列処理の最大限度(Max DOP)はCPUコア数の「4分の1」に設定せよ

 もちろん、これだけ変更すれば、その部分における最低限のチューニングは完了します。しかし1つ上のエンジニアを目指すなら、その理由まできっちり知っておくべきでしょう。その理由を知ることで、監視ツールや動的管理オブジェクトが発する「声」をより多く聞くことができるようになるからです。

その1:tempdbの数をCPUコア数にあわせよ

 こちらは前回、ラッチの解説で取り上げました。Latchを最小限にするために、tempdb(一時表領域)の数はCPUコア数(スケジューラ数)と同じ数だけ用意してください。

図1 tempdbの設定例。CPUコア数(スケジューラ数)と同じ数だけ用意する
図1 tempdbの設定例。CPUコア数(スケジューラ数)と同じ数だけ用意する(クリックで拡大します)

その2:x64環境なら「メモリ内のページロック指定」を変えよ

 これはOS側の設定です。64bit環境を使っているDB管理者は、Windowsのローカルポリシー、ユーザー権利の割り当てにおける「メモリ内のページのロック」に、SQL Serverの実行ユーザーを追加します。これだけです。MSDNのドキュメントは日本語も英語もどちらも大変不親切で、やるべきなのかやらなくてもいいのかが分かりにくいのです。結論からいうと、これは必ず設定すべきです。

図2 「メモリ内のページのロック」にSQL Server実行ユーザーを追加する
図2 「メモリ内のページのロック」にSQL Server実行ユーザーを追加する(クリックで拡大します)

【参考】
4GBを超える物理メモリに対するメモリサポートの有効化
http://msdn.microsoft.com/ja-jp/library/ms179301.aspx

Lock Pages in Memoryオプションを有効にする方法(Windows)
http://msdn.microsoft.com/ja-jp/library/ms190730.aspx


 これは、SQL Serverの実行ユーザーが、メモリの連続領域を確保するために設定すべき項目です。64bit環境であればメモリはふんだんに搭載しているはずです(第2回「CAT秘伝、バランスド・システムの考え方」参照)。この設定をしておかないと、物理的に連続したメモリ領域を確保できないため、せっかく搭載したメモリを有効に活用できません。そのためにこの権限を与える必要があります。

図3 SQL Serverのログ。1行目は連続領域が確保できていないときのログが表示されている。設定を行うと下のようなログが出力される
図3 SQL Serverのログ。1行目は連続領域が確保できていないときのログが表示されている。設定を行うと下のようなログが出力される

 もし64bit環境を利用していたならば、SQL Serverのログをみてください。もしそこに「Cannot use Large Page Extensions: lock memory privilege was not granted.」と表示されていたとしたら、連続領域が確保されていない状態で動作していることになります。すぐにローカルポリシーを見直し、設定を変えてみてください。正しく設定されていれば、ログには「Large Page Granularity: 2097152」 (2MB)、および「Large Page Extensions enabled.」と表示され、プロセスはそれぞれ2MBの物理的に連続したメモリ領域を確保していることが確認できます。

Copyright © ITmedia, Inc. All Rights Reserved.

       | 次のページへ
ページトップに戻る