1. バッチ集計

バッチ集計の構成

Version:
日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

バッチ集計を使用すると、インタラクションをバッチにグループ化して、集計処理フレームワークのパフォーマンスを向上させることができます。Sitecore Experience Database (xDB) では、バッチ集計は標準インストールの一部ですが、特定のハードウェアやソリューション アーキテクチャに応じて既定の設定を変更することもできます。バッチ集計構成のパフォーマンスは、このトピックのパフォーマンス カウンターを使用してテストできます。

次の場合は、デフォルトのバッチ集約設定を変更する必要があります。

  • バッチ集計のパフォーマンスをソリューションに合わせて改善します。

  • バッチ集計を有効にして、独自のカスタム集計を使用します。

デフォルトのバッチ集計設定を変更するには、Sitecore.Analytics.Processing.Aggregation.Services.configファイルを編集する必要があります。

メモ

設定ファイルを直接変更するのではなく、実行時に必要な変更を実行する独自のカスタム設定パッチファイルを作成してください。

バッチ集計構成設定

次の設定を使用すると、バッチ集計の設定を調整して、集計処理中のSitecoreソリューションのパフォーマンスを向上させることができます。

構成ノード

形容

MaximumBatchSize

MaximumBatchSize設定を使用すると、1つのバッチに含めるインタラクションの最大数を制御できます。

この設定は、個々のSitecoreソリューションのパフォーマンスに応じて調整します。最大バッチ・サイズを設定する際には、以下の点を考慮してください。

  • 所有しているSQL Serverディスクの数。

  • 処理能力 (プロセッサの種類と数)。

  • ネットワーク遅延。

  • 集約/処理サーバーの特定の構成。

デフォルト設定は64インタラクションです。 <paramdesc="maximumBatchSize"type="Sitecore.Analytics.Core.ConfigurationHelper,Sitecore.Analytics.Core"factoryMethod="ToShort"arg0="64"/>

MultiplexingTimeout

多重化は、コミットの直前に複数の集計スレッドを1つのトランザクションに折りたたむことで、処理を高速化し、SQL Serverの負荷を軽減します。

多重化タイムアウト設定を使用すると、マルチプレクサが並列に実行される集約エージェントを待機してから、データ セットをレポート データベースに格納できる最大時間を指定できます。

多重化タイムアウトを変更する理由には、次のようなものがあります。

  • 処理サーバーとSQLサーバー間のネットワーク待機時間。

  • 処理エージェントの数。

  • SQL Serverの負荷

値を1秒 (デフォルト値) に設定すると、集約エージェントによって生成された結合結果を毎秒保存するようにシステムに指示されます。デフォルト設定は1秒です。 <MultiplexingTimeout>0.00:00:01</MultiplexingTimeout>

Aggregator

バッチ アグリゲーターの標準実装を独自のカスタム実装に置き換えます。

<Aggregator>
<MultiplexingTimeout>0.00:00:01</MultiplexingTimeout>
</Aggregator>

テーブル値パラメータ (TVP)

Sitecoreは、テーブル値パラメーター (TVP) を使用して、集約された情報をSQLサーバーに送信します。

テーブル値パラメータの使用方法については、Microsoftの記事「 テーブル値パラメータの使用 (データベース エンジン)」を参照してください。

TVPを使用すると、SQL Serverとの通信が高速になります。これにより、コレクション データベースのデータをグループ化した後で、テーブルをパラメータとして関数またはストアド プロシージャに渡すことができます。TVPの使用はオプションであり、ファクト テーブルとディメンション テーブルごとに個別に実装されます。

Sitecore設定ファイルのSQLテーブル マッピングには、TVPをサポートするための次のプロパティがあります。

  • IsMultiRow – ストアド・プロシージャがTVPを受け入れるかどうかを示します。

  • TableType – ストアド プロシージャによって受け入れられるSQL Serverユーザー定義型の名前。この型は、テーブルの構造に対応している必要があります。同じ列を同じ順序で持ち、同じ型を使用する必要があります。ユーザー定義型の詳細については、Microsoftの記事「 SQL Serverでのユーザー定義型の操作」を参照してください。

SQLテーブル マッピングは、Sitecore.Analytics.Processing.Aggregation.configファイルで定義\sitecore\aggregation\routines\ExecRoutineStatementBuilder\mappingsパスにあります。

TVPをサポートするカスタム集計を作成することをお勧めします。これを行うようにSitecoreを設定する方法については、例を参照してください。

構成パッチ・ファイルの例

次の例をカスタマイズして、デフォルトのバッチ集計構成を変更できます。

例1: デフォルトの構成設定を変更する

これは、デフォルトのバッチ集約設定ファイルの設定を変更するために使用できる設定パッチファイルの例です。ライブアグリゲーターと履歴アグリゲーターの両方のMaximumBatchSizeMultiplexingTimeout、Interval、およびMaxThreads パラメーターを変更する方法を示します。

<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
<sitecore>
    <aggregation>
    <!-- Configure the aggregator agent: -->
    <aggregator>
            <param desc="aggregator" type="Sitecore.Analytics.Aggregation.InteractionBatchAggregator, Sitecore.Analytics.Aggregation" singleInstance="true">
                <MultiplexingTimeout>0.00:00:01</MultiplexingTimeout>
            </param>
            <param desc="dateTimeStrategy" ref="aggregation/dateTimePrecisionStrategy" />
    </aggregator>
    <!-- Configure the historyWorker agent: -->
    <historyWorker>
            <param desc="aggregator" type="Sitecore.Analytics.Aggregation.InteractionBatchAggregator, Sitecore.Analytics.Aggregation" singleInstance="true">
                <MultiplexingTimeout>0.00:00:01</MultiplexingTimeout>
            </param>
            <param desc="maximumBatchSize" type="Sitecore.Analytics.Core.ConfigurationHelper, Sitecore.Analytics.Core" factoryMethod="ToShort" arg0="128" />
    </historyWorker>
    <!-- Aggregation Module: -->
        <module type="Sitecore.Analytics.Aggregation.AggregationModule" singleInstance="true">
            <BackgroundServices hint="list:Add">
                <aggregator type="Sitecore.Analytics.Core.AsyncBackgroundService">
                    <param desc="interval" type="Sitecore.Analytics.Core.ConfigurationHelper, Sitecore.Analytics.Core" factoryMethod="ToTimeSpan" arg0="0.00:00:15" />
                    <param desc="maxAgents" type="Sitecore.Analytics.Core.ConfigurationHelper, Sitecore.Analytics.Core" factoryMethod="ToInt" arg0="1" />
                </aggregator>
                <contactProcessing type="Sitecore.Analytics.Core.AsyncBackgroundService">
                    <param desc="interval" type="Sitecore.Analytics.Core.ConfigurationHelper, Sitecore.Analytics.Core" factoryMethod="ToTimeSpan" arg0="0.00:00:15" />
                    <param desc="maxAgents" type="Sitecore.Analytics.Core.ConfigurationHelper, Sitecore.Analytics.Core" factoryMethod="ToInt" arg0="1" />
                </contactProcessing>
                <rebuild type="Sitecore.Analytics.Core.AsyncBackgroundService">
                    <param desc="interval" type="Sitecore.Analytics.Core.ConfigurationHelper, Sitecore.Analytics.Core" factoryMethod="ToTimeSpan" arg0="0.00:00:15" />
                    <param desc="maxAgents" type="Sitecore.Analytics.Core.ConfigurationHelper, Sitecore.Analytics.Core" factoryMethod="ToInt" arg0="1" />
                </rebuild>
                <history type="Sitecore.Analytics.Core.AsyncBackgroundService">
                    <param desc="interval" type="Sitecore.Analytics.Core.ConfigurationHelper, Sitecore.Analytics.Core" factoryMethod="ToTimeSpan" arg0="0.00:00:15" />
                    <param desc="maxAgents" type="Sitecore.Analytics.Core.ConfigurationHelper, Sitecore.Analytics.Core" factoryMethod="ToInt" arg0="1" />
                </history>
                <historyCompletionCheck type="Sitecore.Analytics.Core.AsyncBackgroundService">
                    <param desc="interval" type="Sitecore.Analytics.Core.ConfigurationHelper, Sitecore.Analytics.Core" factoryMethod="ToTimeSpan" arg0="0.00:00:15" />
                    <param desc="maxAgents" type="Sitecore.Analytics.Core.ConfigurationHelper, Sitecore.Analytics.Core" factoryMethod="ToInt" arg0="1" />
                </historyCompletionCheck>
            </BackgroundServices>
        </module>
  </aggregation>
</sitecore>
</configuration>

例2: カスタム集計のTVPサポートの有効化

これは、カスタム集計でバッチ集計を機能させるための独自の設定ファイルを作成するために使用できるコード サンプルです。また、カスタム プロセッサを集計パイプラインに統合して対話を行う方法と、SQL Server TVPをサポートするカスタム ファクト テーブルのマッピングを構成する方法を示します。

<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
<sitecore>
    <aggregation>
    <routines>

        <ExecRoutineStatementBuilder>
        <mappings>
            <!-- Reference to the fact table and associated stored procedure and table type -->
            <SqlMappingEntity uid="MyCustomFact"
            type="Sitecore.Analytics.Aggregation.SqlMappingEntity, Sitecore.Analytics.Sql">
            <Table>Fact_CustomFact</Table>
            <Routine>Add_CustomFact_Tvp</Routine>
            <IsMultiRow>True</IsMultiRow>
            <TableType>CustomFact_Type</TableType>
            </SqlMappingEntity>
        </mappings>
        </ExecRoutineStatementBuilder>
    </routines>
    </aggregation>
    <pipelines>
    <group groupName="analytics.aggregation">
        <pipelines>
        <interactions>
            <!-- Registration of the processor that will write to the new fact table -->
            <processor uid="MyCustomFact" type="Customization.CustomProcessor, Customization" />
        </interactions>
        </pipelines>
    </group>
    </pipelines>
  </aggregation>
</sitecore>
</configuration>

バッチ集計パフォーマンス カウンター

バッチ集計処理構成のパフォーマンスを調整する場合、または集計プロセスを監視およびトラブルシューティングする場合は、次のカウンターを使用してパフォーマンスを測定できます。

カウンター

形容

平均バッチサイズ – ライブ

ライブ集計中に処理された各バッチに含まれるインタラクションの平均数を表示します。

平均バッチサイズ – 履歴

履歴集約中に処理された各バッチに含まれるインタラクションの平均数を表示します。通常の操作では、このカウンターは、履歴集計がアクティブである間、ほとんどの時間MaxBatchSizeと等しくなります。

失敗したアイテムを含むバッチの数 – ライブ

レポートデータベースへの集計または保存に失敗したインタラクションを含むライブ集計バッチの数(秒あたり)を表示します。通常の操作では、このカウンタは常に0です。

失敗したアイテムを含むバッチの数 – 履歴

レポートデータベースへの集計または保存に失敗したインタラクションを含む履歴集計バッチの数(秒あたり)を表示します。通常の操作では、このカウンタは常に0です。

ライブインタラクション処理済み/秒

プライマリ レポート データベースの更新時に処理されたインタラクションの数。

履歴インタラクション処理/秒

セカンダリ レポート データベースの再構築時に処理された集計の数。

処理されたインタラクションの合計/秒

集約サブシステムによって処理されたインタラクションの合計数。

ライブ集計エラー/秒

プライマリ レポート データベースの更新時に例外が原因で集計できなかったインタラクションの数。

履歴集約エラー/秒

セカンダリ レポート データベースの更新時に例外が原因で集計できなかったインタラクションの数。

合計集計エラー/秒

例外のために集計できなかったインタラクションの合計数。

平均エンティティ バッチ読み込み時間 - ライブ (ミリ秒)

XConnectからエンティティのバッチをフェッチするのにかかる時間の平均時間。

Entity Load Failures - ライブ/秒

XConnectからの取得に失敗したエンティティの数。

平均集計パイプライン時間 (ミリ秒)

1つのインタラクションを集約するのにかかる時間の平均時間(必要な情報をすべてロードすることを含みますが、レポートデータベースに書き込む時間は含まれません)。

平均書き込み時間 (ミリ秒)

集計データをレポート データベースに保存するのにかかった平均時間。

Average Write Time - プライマリ (ミリ秒)

集約されたインタラクションをプライマリレポートデータベースに送信するのにかかる時間の平均時間(ミリ秒単位)

Average Write Time - セカンダリ、ライブ(ミリ秒)

受信インタラクションでレポートデータベースを更新するときに、集約されたインタラクションをセカンダリレポートデータベースに送信するのにかかる時間の平均(ミリ秒単位)。

Average Write Time - セカンダリ、歴史(ミリ秒)

データベースの再構築プロセス中に履歴インタラクションを書き込むときに、集約されたインタラクションをセカンダリレポートデータベースに送信するのにかかる時間の平均時間(ミリ秒単位)。

アクティブインタラクションアグリゲーター

集約パイプラインを実行している同時スレッドの数。

平均チェックアウト時間 - ライブ (ミリ秒)

ライブ訪問の処理中に処理プールから作業項目を取得するのにかかる時間の平均時間。

平均チェックイン時間 - ライブ (ミリ秒)

ライブ訪問の処理中に、処理プールで作業項目を完了としてマークするのにかかる時間の平均時間。

平均チェックアウト時間 - 履歴 (ミリ秒)

レポート データベースの再構築中に範囲スケジューラから作業項目を取得するのに要する平均時間。

平均チェックイン時間 - 履歴 (ミリ秒)

レポート データベースの再構築中に、範囲スケジューラで作業項目を完了としてマークするのにかかる時間の平均時間。

平均マルチプレクサ時間(ms)

マルチプレクサが集計データをレポート・データベースに保存するのに要する平均時間。

この記事を改善するための提案がある場合は、 お知らせください!