DB管理者がいますぐ確認すべき3つの設定:真・Dr. K's SQL Serverチューニング研修(4)(2/3 ページ)
SQLをうまく書くことだけがチューニングではありません。まずは、この3つの設定をチェックすることからはじめよう(編集部)
その3:OLTPでは、並列処理の最大限度(Max DOP)はCPUコア数の「4分の1」に設定せよ
次に、Max DOP を説明しましょう。こちらはサーバのプロパティ、詳細設定で、「並列処理の最大限度」で指定します。
この設定は「Max DOP : Max degreee of parallelism」、並列処理可能な実行プランの最大値です。既定値は「0」、これは無制限を意味します。スケジューラに余裕があれば、並列処理が行えますが、あまり大きな値に設定すると、オーバーヘッドによりトランザクション処理が遅くなります。既定値はゼロ、つまり無制限なのでこのままではいけません。
そこで、CATの推奨する値を教えましょう。OLTP処理では、論理CPUコア数の「4分の1」、またはNUMAノード上のCPUコア数(ソケット上のCPUコア数)の、どちらか小さい値に設定します。これは彼らの経験からでてきた数値です。
図5を見てください。この図のアイコンのいくつかに黄色い丸に矢印が付いたマークが見えると思います。このマークが付いた実行プランのステップは、CPUのスケジューラに余裕があれば複数のスケジューラで実行することで、処理時間を短くできる可能性があります。例えばJOIN処理や、クラスタ化のインデクシングなどが並列処理可能なものですね。Max DOPで設定した値まで、処理を多重化できるのです。
私はCPUが12個あるマシンを試験環境として使っていますが、この場合ですとMax DOPを「3」としています。
かといって、あまりこの値を大きくすることは望ましくありません。トランザクション処理は公平にスケジューリングされるよう動作しますので、大きくしすぎるとボトルネック(トランザクションの同時実行性が低下する)が発生します。CATからはベストプラクティスとして「4分の1」が指示されていますので、まずはこの値に設定することから始めてください。
すべてのチューニング可能なパラメータを表示するためにはアドバンスオプションを変更せよ
アドバンスドオプションを設定するには、以下を実行します。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
これにより、表示される項目が16項目から70項目に増えます。先に紹介したMax DOPはアドバンスオプション扱いになっています。実は、このアドバンスオプションは隠されているので、本来は触るべきではありません。基本的にはこのMax DOPだけを変更するようにしてください。
コラム
アドバンスオプションには、「xp_cmdshell」というものもあります。これはコマンドシェルを実行可能かどうかの設定で、現在はデフォルトでオフですが、オンになっていた時代(SQL Server 2000)もありました。そう、これが私たちを苦しめたSQLインジェクションで利用された機能の1つです。
これらは、ほとんどの環境でいますぐチェックすべき項目です。ぜひ、無駄な動きを省いて、このチューニングを終わらせておきましょう。SQLのチューニングはそれからでも遅くはないです。
Copyright © ITmedia, Inc. All Rights Reserved.