AutomationPoolテーブルに大量のレコードがある場合、データの収集で使用されているAutomationPool_Checkoutストアド プロシージャの実行の速度が遅くなったり、実行に失敗したりする可能性があります。この場合、マーケティング オートメーション活動(例:連絡先をキャンペーンに登録したり、キャンペーンの状態に移動したりする)が実行されなかったり、実行時に長時間の遅延が生じるようになります。この際、以下のメッセージが、マーケティング オートメーションのログに出力されることがあります。
Error: Execution Timeout Expired. The timeout period elapsed prior to completion of the operation or the server is not responding. Call Stack: System.Data.SqlClient.SqlException: at System.Data.SqlClient.SqlCommand+<>c.<ExecuteDbDataReaderAsync>b__180_0 (System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089) at System.Threading.Tasks.ContinuationResultTaskFromResultTask`2.InnerInvoke (mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089) at System.Threading.Tasks.Task.Execute (mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089) at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089) at Sitecore.Xdb.Sql.Common.Extensions.DbCommandExtensions+<>c__DisplayClass1_0+<<ExecuteReaderWithRetryAsync>b__0>d.MoveNext (Sitecore.Xdb.Sql.Common, Version=4.0.0.0, Culture=neutral, PublicKeyToken=null) at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089) at Sitecore.Xdb.Sql.Common.Extensions.DbCommandExtensions+<ExecuteReaderWithRetryAsync>d__1.MoveNext (Sitecore.Xdb.Sql.Common, Version=4.0.0.0, Culture=neutral, PublicKeyToken=null) at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089) at Sitecore.Xdb.Sql.Common.Extensions.DbCommandExtensions+<ExecuteReaderWithRetryAsync>d__0.MoveNext (Sitecore.Xdb.Sql.Common, Version=4.0.0.0, Culture=neutral, PublicKeyToken=null) at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089) at Sitecore.Xdb.MarketingAutomation.SqlServer.Pool.Commands.CheckoutCommand`1+<ExecuteAndProcessResultsAsync>d__30.MoveNext (Sitecore.Xdb.MarketingAutomation.SqlServer, Version=3.0.0.0, Culture=neutral, PublicKeyToken=null) at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089) at Sitecore.Xdb.MarketingAutomation.SqlServer.SqlServerCommand`2+<ExecuteAsync>d__17.MoveNext (Sitecore.Xdb.MarketingAutomation.SqlServer, Version=3.0.0.0, Culture=neutral, PublicKeyToken=null) Inner exception System.ComponentModel.Win32Exception handled at System.Data.SqlClient.SqlCommand+<>c.<ExecuteDbDataReaderAsync>b__180_0:
本事象によって、マーケティング オートメーションのデータベースのリソース消費が増加します。
本事象を解決するには、AutomationPoolテーブルの負荷を軽減するようAutomationPool_Checkoutストアド プロシージャを更新することができます。
... FROM [xdb_ma_pool].[AutomationPool] WITH (READPAST, ROWLOCK) WHERE [Scheduled] <= @Now AND [Priority] >= @MinimumPriority AND [ContactId] NOT IN ( SELECT [ContactId] FROM [xdb_ma_pool].[ContactWorkerAffinity] WITH (READUNCOMMITTED) WHERE [WorkerId] <> @WorkerId ) ORDER BY [Randomizer] ASC --ORDER BY [Priority] DESC, [Scheduled] ASC, [Randomizer] ASC ...※註:この変更によって、レコードはランダムな順序で処理されることになります(通常では、優先順位および予定日の順序で処理される)