サイトコア 6.6.0 (rev. 130404) ベースのプロジェクトでは、古いシステムのデータベースからサイトコア データベースにデータを移行する必要があります。約 650,000 個のオブジェクトを移行する必要があります。古いデータベースのこれらの各オブジェクトは、マスター データベースに約 4 つのサイトコア アイテムを作成します。したがって、移行されるのはかなり大きなデータ セットです。
Sitecore API を Windows アプリケーションに接続し、そのアプリからデータ移行ロジックを実行します。データ移行の開始時はかなり高速で、1 秒あたり約 4 つのオブジェクトがサイトコア マスター データベースに転送されます。最初の 10,000 個のオブジェクトには 40 分しかかかりませんでした。このレートでは、7 時間で 100,000 個のオブジェクトが移行されると予測されます。
しかし、問題は時間の経過とともに、物事がますます著しく遅くなります。約 100,000 個のオブジェクトを移行した後、現在はわずか 30,000 個のオブジェクトを移行するのに約 7 時間かかります。パフォーマンス チューニング ガイドに記載されているように、サイトコア データベースのインデックスを再構築することさえありました。また、新しく作成されたサイトコア アイテムを配置する場所を見つけるためにサイトコア クエリを実行することもありません。データ移行中は、サイトコア エージェントや lucene インデックスの更新操作は実行されていません。
データ移行ロジックの最初のコードは次のとおりです。
using (new Sitecore.SecurityModel.SecurityDisabler())
using (new Sitecore.Data.Proxies.ProxyDisabler())
using (new Sitecore.Data.DatabaseCacheDisabler())
using (new Sitecore.Data.BulkUpdateContext())
この速度低下の理由は、サイトコア データベース インデックスの増加である可能性があります。私は SQL の専門家ではありませんが、いくつか読んだ後、インデックスの運用統計に関するレポートを入手しました。数値が問題の原因を示しているかどうかはわかりません。
私よりもサイトコア/SQL の知識が豊富な人は、これを手伝ってくれますか?
編集:もう少し掘り下げた後、SQLサーバーのラッチの統計を取得しました(実際には理解していません)。
ありがとう