はじめに
SQL server で、何も考えずにインストールして、問題となる代表的な設定内容です。
さすがに本番環境ではありえませんが、インストールしただけの状態の開発環境があったので、まとめてみました。
データファイルとログファイルの保存場所
- 間違ってもCドライブに保存しないようにしましょう。
設定方法
- 省略。
スナップショット分離レベル
- 分離レベルのデフォルト値は READ COMMITTED が設定されています。
- SQL Server の READ COMMITTED は、、select for update の動きとなるため、大抵のシステムでは使い物になりません。
- Oracle の READ COMMITTED (他で未コミットのレコードは変更前の値を参照する)にするには、READ COMMITTED SNAPSHOT にする必要があります。
READ COMMITTED SNAPSHOT への変更方法
- 省略。
メモリ使用の最大値と最小値
- インスタンス(サービス)単位の設定となります。
- 最大値のデフォルト値は無制限に近い値が設定されています。
- SQL Server が処理中に確保したメモリは、使い終わってもほとんど開放しないため、適切なメモリ設定が必要になります。
設定方法
- SQL Server Management のオブジェクトエクスプローラのインスタンス(ドラム缶のアイコン)を右クリックして、プロパティをクリックする。
- メモリを選択して、該当箇所の値を変更する。
補足
- DBが稼働中であってもメモリの最大値と最小値の変更することができます。
- 未使用メモリは、サービスを再起動してたタイミングで開放されます。
- 一度、最大値を小さくして未使用メモリを解放した後に元に戻せば、サービスを再起動せずに開放できます。
- 未使用メモリを開放するコマンドは存在しません。
(最大値を変更するコマンドは存在するため、最大値を小さくして元に戻せは同等のことができますが、元に戻すのに失敗した場合を考慮すると、最大値の変更によるメモリ開放を自動実行するのはお勧めしない。)
最大値をどのくらいにすべきか?
- サーバーに対してメモリ空き容量を監視する場合は、自ずと最大値は決まると思います。
- 私の場合は、DB専用サーバーならば、他のサービス用に2Gを確保したうえで、確保可能な最大値を設定しています。
おわりに
最低限の設定内容ぐらい会社でマニュアル作っておいて欲しいものですね。
手を抜いた箇所は、暇を見つけて補完していく予定です。
その他の設定関係での注意ポイントがあれば、ぜひコメントください。