【SQL Server】おすすめ初期設定
SQL Serverのオプションを最適化するための
おすすめ初期設定をまとめました。
照合順序
SQL Server では、文字の大小関係を比較する場合の基準を照合順序 (collation) と呼んでいます。
例えば、「朝」と「海」ではどちらが大きいのか、「あ」「ア」「ア」を大きい順に並べた場合どのように並ぶのかといった、
文字の大小関係を決めているのが照合順序です。
実はSQL Serverのデフォルトだと、アルファベットの大文字と小文字を区別しない設定になっています。
※濁点、半濁点は区別します。
そこで、アルファベットの大文字と小文字を区別するため、以下の設定をおすすめします。
おすすめ:Japanese_CS_AS_KS_WS
※デフォルト値は、Japanese_CI_AS
変更前の注意点
照合順序は、データベースのオプションを変更しても既に作成しているテーブルは、元の照合順序のままです。
※変更後に作成されたテーブルは新しい照合順序で作成されます。
なので、CREATE TABLE
を実行するのが早いと思います。
- ダミーのテーブルを
CREATE TABLE
。 - ダミーテーブルにデータを
INSERT SELECT
で退避し、一度テーブルをDROP TABLE
。 - その後、
CREATE TABLE
を実行。 - ダミーテーブルのデータを
INSERT SELECT
で元のテーブルに戻す。 - ダミーテーブルを
DROP TABLE
。
な感じで良いと思います。
ロック待ちを解決
SQL Serverのデフォルト設定ではトランザクション分離レベルは、
READ COMMITTED
となってます。
これだけだと一見問題ないのですが、先のトランザクションの処理が長い場合や、
後のトランザクションがテーブルを参照できずにロック待ちとなってしまいます。
つまり、誰かが登録や更新処理を長い間実行していると、他の人がSELECT
した時も
待ちになってしまいます。
SELECT
でも待ちになるのは、嫌ですよね。
そこで、以下の設定をおすすめします。
Is Read Committed Snapshot On:True
スナップショット分離を許可:True
※デフォルトは両方とも、False
トランザクション分離レベルの詳細については、以下を参照ください。