Dynamics CRM 2011 Update Rollup 6 でのアップグレードパフォーマンスの向上
みなさん、こんにちは。
今回は先日公開された Microsoft Dynamics CRM 2011 Update Rollup 6
による、アップグレードのパフォーマンス向上に関して紹介します。
情報元 : Improved Upgrade Performance in UR6
Microsoft Dynamics CRM 4.0 から Microsoft Dynamics CRM 2011 に組織の
インポートを利用してアップグレードする場合に、Update Rollup 6 を適用すると
パフォーマンスの向上が見込めます。
今回は Update Rollup 6 で提供されるオプションに関して情報を共有したいと思います。
これらのオプションは大規模な展開により関連があります。これらのオプションは、展開と
ハードウェアレベルでの影響となるため、以下のレジストリで DWORD 値の作成が必要です。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSCRM.
MaxDopForIndexCreation キー
Microsoft Dynamics CRM では SQL Server の、max degree of parallelism (maxdop) 値を
1 にすることを推奨しています。こちらの値を 1 に変更することで、SQL Server のクエリプランで
並列プランが作成されなくなります。複数ユーザーが同時にシステムを利用する場合には有効
ですが、アップグレード時には 1 人のユーザーしかデータベースにアクセスしないため、こちらの
値を変更することで、一般的にパフォーマンスの向上を見込めます。
MaxDopForIndexCreation レジストリキーは、インデックスの作成に関してのみ並列処理の
実行を許可するオプションであり、内部テストでは値を 4 にすることでかなりのパフォーマンス
向上が確認されています。こちらのキーを利用すれば、SQL Server でのmaxdop の変更は
不要です。
※こちらのキーでは 1 つのインデックス作成のクエリが並列化されます。
SortInTempDB キー
数百万行のデータを持つテーブルに対してインデックスを作成する場合、SQL Server は一時
的にデータをディスクに保持します。この場合、SQL Server の SORT_IN_TEMPDB オプションを
利用することで、tempdb に対して専用のディスクを割り当てているような環境では、処理速度の
向上が見込めます。SortInTempDB キーの値を 1 にすることで、 大きなテーブルのインデックス
処理に対して、tempdb を利用するよう指定できます。
NumThreadsForIndexCreation キー
Microsoft Dynamics CRM を大規模な環境で利用している場合、CPU コアが 16 個以上ある
ような強力なハードウェアで SQL Server を実行していることが多くあります。このような環境で
こちらのキーを設定すると、インデックス作成の処理が並列して実行され、インデックス作成の
パフォーマンス向上がさらに期待できます。値には利用したいスレッド数を指定します。
内部テストではこちらの値も 4 にすることで、よい結果が出ました。
※こちらのキーでは、インデックス作成処理自体をマルチスレッドで実行します。
上記 3 つのキーはアップグレード中の Upgrade Indexes ステップのパフォーマンスを向上
させます。このステップは大規模環境では数時間かかることもあります。実際にかかった時間は
アップグレード時のログを参照することで確認が可能です。
BatchAddAttributeUpdates キー
このキーを設定すると、既存テーブルに対して NULL を許可しない列を追加する際、内部的に
発行するクエリ数を減らすことができます。このキーを設定することにより、アップグレード中の
メタデータ処理の時間を削減できます。オプションを有効にする場合、値を 1 にします。
これらのオプションは全て、アップグレードのパフォーマンス向上に特化したオプションであり、
通常運用時には効果を発揮しません。これらのオプションを提供したのは、多くのお客様が
アップグレード時のパフォーマンスに関して苦慮されているためです。現在アップグレードに
時間がかかりすぎる問題に直面されているお客様は、是非これらのオプションをお試しください。
またアップグレードが完了した後は、これらのキーを削除していただくことをお勧めします。
その他の考慮事項としては、高可用性を設定されている場合は一旦構成を解除したり、
データベースの復元をフルに設定している場合は、アップグレード中のみシンプルに変更し、
アップグレード完了後に構成を戻すという方法も考えられます。
内部的なテストでは、Update Rollup 6 で提供されたオプションを利用した場合、テラサイズの
大規模なデータベースを利用している環境でアップグレードにかかる時間が全体で 60 % 程度
削減できました。これによりアップグレードによるダウンタイムの削減につながることを期待します。
まとめ
今回紹介したレジストリキーをお試しいただく場合は、それぞれのキーの動作の特徴を
ご確認いただき、環境に適したものを有効にしてテストを行ってください。
- Dynamics CRM サポート 中村 憲一郎