SQL ServerのためのOS設定ベストプラクティス
■はじめに
SQL Serverを構築する際のベストプラクティスのサイトを見つけました。
英語だったので勉強がてらブログにまとめたいと思います。記事が書かれたのが2018年2月1日とのことで割と最近と思います。
■ベストプラクティス
ベストプラクティスは下記8つあるそうです。それぞれコメントしていきたいと思います。
- アロケーションユニットサイズの指定
- インスタントファイル初期化設定
- 電源プランの設定
- ウィルスソフトの除外対象設定
- Lock pages in memoryの設定
- ページファイルサイズの設定
- Windowsセキュリティポリシーの設定
- Windows 2012/2012 R2クラスタの動的クォーラム設定
1. アロケーションユニットサイズの指定
これはWindows Server 2008の時代から言われていることです。
ドライブをフォーマットするときにアロケーションユニットサイズの指定を行うことができます。SQL Serverは1つのページが8KBとなり、エクステントは8つのページファイルから成り立つので64KBの隣接した領域を利用します。そのため、アロケーションユニットサイズは64KBに設定することが推奨されています。
2. インスタントファイル初期化設定
これはWindows Server 2008の時代から言われていることです。
デフォルトではデータベースファイルやログファイルの操作(追加など)が発生した場合に、ゼロ埋めが発生するためオーバーヘッドがかかります。このゼロ埋めを行わないように設定を行います。設定方法は参考サイトを参照ください。
3. 電源プランの設定
これはWindows Server 2008の時代から言われていることです。
OSインストール時のデフォルトの電源プラン設定は「バランス」となっています。これを「高パフォーマンス」に変更を行います。この設定を行うことでバッチ処理のパフォーマンスが10%以上向上するといわれています。設定後にはCPUのクロック数が高い値で固定されることも確認できます。
4. ウィルスソフトの除外対象設定
これはWindows Server 2008の時代から言われていることです。
ウィルスソフトを常駐させる場合は、SQL Serverが利用するディレクトリおよびファイルを除外するように設定します。この設定を行うことでファイルのパフォーマンスが向上します。詳しい設定は下記リンクが役に立ちそうです。
https://support.microsoft.com/en-us/help/309422/choosing-antivirus-software-for-computers-that-run-sql-server
5. Lock pages in memoryの設定
これはWindows Server 2008の時代から言われていることです。
sys.dm_os_wait_statsなどで、バッファーラッチの待機イベントが多い場合にこの設定を行うことでパフォーマンスが向上することがあります。SQL Serverのサービス再起動が必要になるため、本番稼働中のマシンに対して実行する場合は計画的に実施する必要があります。
6.ページファイルサイズの設定
この項目については今まで意識をしたことがありませんでした。ページファイルの設定ガイドラインがあるのでそれに従いページファイルサイズを設定すると良いようです。下記リンクがガイドラインとなっており、最終更新日が2019年5月22日とのことで内容は信頼できそうです。 https://support.microsoft.com/en-us/help/2860880/how-to-determine-the-appropriate-page-file-size-for-64-bit-versions-of
7. Windowsセキュリティポリシーの設定
この項目については今まで意識をしたことがありませんでした。SQL Serverのサービスアカウントに必要な権限セットなどが記載されています。ポイントは当たり前のことですがSQL Serverの構成マネージャや、Windowsファイアーウォールを手動で設定しないと外部からアクセスできないということでしょうか。権限についての詳細を知りたい場合は下記ドキュメントが参考になります。 Configure Windows Service Accounts and Permissions - SQL Server | Microsoft Docs
8. Windows 2012/2012 R2クラスタの動的クォーラム設定
簡単に言うとWindows Server 2012以降のクラスターでは動的クォーラム構成が有効にしましょうとのことです。この設定を有効にすることで、クォーラム監視投票などが動的に調整されるようになるとのことです。
■終わりに
Windows Server 2008の時代から10年ほど経っていますが、新しいような内容がないことに驚きを感じました。コアな仕様は一度作りあがったらなかなか変更しないということでしょうか。
このベストプラクティスにはありませんでしたが、最近は物理サーバより仮想サーバが多くなってきたため、クラスタ構成の場合heartbeatの間隔なども適切に設定した方がよいのではと感じています。記事自体はSQL Serverのためのものなので、クラスタ構成の場合の設定は別で記事があるのかもしれません。
■参考
下記サイトが元です。