---
title: "バッチ集約の設定"
slug: "configure-batch-aggregation"
abstract: "バッチ集約の設定とパラメータの概要、設定パッチファイルの例、バッチ集約性能カウンター。"
---
# バッチ集約の設定

バッチ集約は、インタラクションをバッチにまとめて集約処理フレームワークのパフォーマンスを向上させることを可能にします。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: 多重化は、コミット直前に複数の集約スレッドを単一のトランザクションにまとめ、処理を高速化し、SQL Serverの負荷を軽減します。多重化タイムアウト設定により、マルチプレクサが並列実行中の集約エージェントを待つ最大時間を指定してから、データセットを報告データベースに保存できます。多重化タイムアウトを変更する理由には以下があります:処理サーバーとSQLサーバー間のネットワーク遅延。処理エージェントの数。サーバー SQLロード値を1秒(デフォルト値)に設定すると、システムに1秒ごとに集約エージェントが生成した合計結果を保存するよう指示します。デフォルト設定は1秒: <MultiplexingTimeout>0.00:00です:01</MultiplexingTimeout>
-   Aggregator: バッチアグリゲーターの標準実装を独自のカスタム実装に置き換えてください。

<Aggregator>
<MultiplexingTimeout>0.\`00:00\`:01</MultiplexingTimeout>
</Aggregator>

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

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

テーブル値パラメータの使い方については、Microsoftの記事「 [Use Table-Valued Parameters (Database Engine)](https://msdn.microsoft.com/en-us/library/bb510489.aspx)」をご覧ください。

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

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

-   IsMultiRow – はストアドプロシージャがTVPを受け入れているかどうかを示します。
-   TableType – ストアドプロシージャで受け入れられるSQL Serverのユーザー定義型の名前。この型はテーブルの構造に対応しなければなりません。同じ列が同じ順序で、同じ型を使用しなければなりません。ユーザー定義型の詳細については、Microsoftの記事「 [Working with User-Defined Types in SQL Server](https://msdn.microsoft.com/en-us/library/ms131064\(v=sql.120\).aspx)」をご覧ください。

SQLテーブルのマッピングは次のパスに位置します: \\sitecore\\aggregation\\routines\\ExecRoutineStatementBuilder\\mappingsおよびSitecore.Analytics.Processing.Aggregation.configファイル内で定義されています。

TVPをサポートするカスタムアグリゲーションを作成することが推奨されます。Sitecoreの設定方法については、例を参照してください。

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

以下の例をカスタマイズして、デフォルトのバッチ集約設定を変更できます。

### 例1:デフォルト設定の変更

これは、デフォルトのバッチ集約ファイル設定を変更するために使える構成パッチファイルの例です。ライブおよび履歴アグリゲーターのMaximumBatchSize、MultiplexingTimeout、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に等しいです。

失敗品を含むバッチ数 – ライブ

レポートデータベースに集約または保存されていないインタラクションを含むライブアグリゲーションバッチ数(秒間)を表示します。通常動作では、このカウンターは常にゼロです。

失敗品を含むバッチ数 – 履歴

レポートデータベースに集約または保存できなかったインタラクションを含む履歴集約バッチ数(1秒あたり)を表示します。通常動作では、このカウンターは常にゼロです。

処理されたライブインタラクション/秒

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

履歴交流処理/秒

二次報告データベースを再構築する際に処理された集約数。

処理された総インタラクション数/秒

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

ライブ集約エラー / 秒

一次報告データベースの更新時に例外により集約できなかったやり取りの数。

履歴集約エラー / 秒

例外により集約できなかったやり取りの数、二次報告データベースの更新時に。

総集計誤差/秒数

例外のために集計できなかった相互作用の総数。

平均エンティティバッチロード時間 - ライブ(ms)

XConnectからエンティティの一括を取得するのにかかる平均時間。

エンティティロード障害 - ライブ/秒

XConnectから取得できなかったエンティティの数。

平均集約パイプライン時間(ms)

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

平均書き込み時間(ms)

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

平均書き込み時間 - プライマリ(ms)

集計されたやり取りを一次報告データベースに提出するのにかかる平均時間(ミリ秒)

平均書き込み時間 - セカンダリ、ライブ(ms)

集計されたやり取りを二次報告データベースに提出するまでの平均時間(ミリ秒単位)。これは、報告データベースに入ったやり取りを更新する際にかかる時間です。

平均執筆時間 - 中学校、歴史(ms)

データベース再構築プロセス中に過去のやり取りを書き込む際に、集計されたやり取りを二次報告データベースに提出するのにかかる平均時間(ミリ秒単位)。

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

集約パイプラインを動かす並行スレッドの数。

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

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

平均チェックイン時間 - ライブ(ms)

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

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

報告データベースを再構築する間にレンジスケジューラから作業項目を取得するのにかかる平均時間。

平均チェックイン時間 - 履歴(MS)

レンジスケジューラで作業項目を完了とマークし、報告データベースを再構築するまでの平均時間。

平均多重化時間(ms)

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