次の方法で共有


データベース同期のパフォーマンス

この記事では、セルフサービス環境での 2012年のアップグレード中のデータベース同期のパフォーマンスを向上させる、 プロジェクトのコピー同期 Microsoft Dynamics AX 処理について説明します。

背景

アップグレード時に、次の3つの同期プロセスが実行されます。

  • Sync : このプロセスは、Prereqステップの一部として実行されます。 新しいテーブルおよびフィールドが追加されます。 また、既存のテーブルにほとんどの新しいインデックス (固有インデックスを除く) が追加されます。
  • DBSync : このプロセスは、最初の完全同期で、新しいフィールドが既存のテーブルに追加され、既存のフィールドが変更されます。 同期前のユーザーの間に無効にされた固有手順この機能では作成手順。
  • FinalDBSync : このプロセスは、データベースの残りの全オブジェクトを同期し、最終的な同期データ準備手順を実行する最終的なデータベース同期です。

同期プロセスに時間がかかるのは異常ではありません。 必要な時間はデータベースのサイズによって異なります。 具体的には、デザインが変更されている大きなテーブルに関連しています。

DBSyncプロセス中に最も遅い変更の1つは、数値フィールド タイプの精度の変更です。 テーブルに変更がある複数の数値フィールドが含まれている場合、各フィールド Alter列 インスタンスは完了まで数分または時間かかる場合があります。 各テーブルにこれらの列タイプが多数含める場合、同期の実行時間は増加します。 2012年 AX 、ほとんどの数値フィールド タイプの精度は 32,16/&。 Dynamics 365 Financeでは、ほとんどの数値フィールド タイプの精度が 32,6

ソリューション

ソリューションとして、同期エンジンには同期 同期(コピー同期) が があります。 アップグレードしたDynamics 365 Finance形式で新しいバージョンのテーブルDynamics 365 Financeされます。 次の表には、名前が付けられた所有者スキーマ 名前が付。 古いテーブルのデータが新しいテーブルに挿入されます。 この場合、次のアクションが実行されます。

  1. インデックスはシャドウ テーブルに適用されます。
  2. このテーブルの古いテーブル 削除されます。
  3. 影のテーブルは、新しい テーブル に再度割り当てされます。

を満たすすべての に対して、Shad同期プロセスが有効になります。

  • テーブル サイズは20,480メガバイト (MB) 以上 (20台の小さい値 [GB]) です。
  • このテーブルには、精度が変更される数値フィールドが1つ以上含まれています。

これらの条件を満たさないテーブルは、標準の方法で同期されます。

テーブル サイズの確認

次のSQLスクリプトを実行して、ターゲットのDynamics 365 Finance Azure SQLデータベースで500 MBを超えるテーブルを検索環境。 データベース接続するには、JUST-in-time (何も指定できません) セッションの開始番号を有効にする必要 Microsoft Dynamics Lifecycle Services。

SELECT t.NAME AS TableName, (sum(a.used_pages) * 8) / 1024 as UsedSpaceMB
FROM sys.tables t WITH(NOLOCK)
INNER JOIN sys.schemas s WITH(NOLOCK) ON t.schema_id = s.schema_id and s.name = 'dbo'
INNER JOIN sys.indexes i WITH(NOLOCK) ON t.OBJECT_ID = i.object_id
INNER JOIN sys.partitions p WITH(NOLOCK) ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id
INNER JOIN sys.allocation_units a WITH(NOLOCK) ON p.partition_id = a.container_id
WHERE t.NAME NOT LIKE 'dt%' AND i.OBJECT_ID > 255 AND i.index_id <= 1
GROUP BY t.NAME, i.object_id, i.index_id, i.name
HAVING ((sum(a.used_pages) * 8) / 1024) > 500 --Edit this to a lower number if needed
ORDER BY sum(a.used_pages) desc

シャドウ コピー同期のしきい値のチューニング

データセットによっては、同期のコピーとプロセス テーブルを増減 できます。

通常、しきい値は減少し、シャドウの同期化に追加のテーブルが含まれます。 ただし、テーブルの同期を非常に多く有効にした場合、 Shadスコア schema)、パフォーマンスが低下するテーブルの数よりもポイントする が到達します。 特定のデータベースに最適な値を見つけるにはテストを行う必要があります。ただし、最初のデータは1 GBでポイントするしてください。

メモ

データ移行ツールキットのSQL 10日からセルフサービストリガーアップグレードを実行する前に、次の #手順 スクリプトを実行します。 アップグレードの前に2012データベースでも実行できます。また、既存の機能に影響はありません。

同期のしきい値をチューニングするには、次のSQLします。

--
-- Edit the following two threshold values as needed:
--
DECLARE @tableSizeThreshold int = 1000 --Currently 1GB for min table size
DECLARE @minNumericFieldsThreshold int = 0 --Currently 0 numeric column change

-- Main Script Start
IF NOT EXISTS ( SELECT 1 FROM [dbo].[SQLSYSTEMVARIABLES] WHERE PARM='SHADOWCOPYSIZE' )
BEGIN
    INSERT INTO [dbo].[SQLSYSTEMVARIABLES] 
    ([PARM], [VALUE], [IPARM], [IVALUE])
    VALUES('SHADOWCOPYSIZE', @tableSizeThreshold, 20, NULL);
END
ELSE
BEGIN
    UPDATE [dbo].[SQLSYSTEMVARIABLES] 
    SET VALUE = @tableSizeThreshold
    WHERE PARM='SHADOWCOPYSIZE'
END
IF NOT EXISTS ( SELECT 1 FROM [dbo].[SQLSYSTEMVARIABLES] WHERE PARM='SHADOWCOPYREALSCALECHANGELIMIT' )
BEGIN
    INSERT INTO [dbo].[SQLSYSTEMVARIABLES]
    ([PARM], [VALUE], [IPARM], [IVALUE])
    VALUES ('SHADOWCOPYREALSCALECHANGELIMIT', @minNumericFieldsThreshold, 20, NULL);
END
ELSE
BEGIN
    UPDATE [dbo].[SQLSYSTEMVARIABLES]
    SET VALUE = @minNumericFieldsThreshold
    WHERE PARM='SHADOWCOPYREALSCALECHANGELIMIT'
END
-- Main Script End