パフォーマンスの向上

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

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

Sitecore Commerce Connectのパフォーマンスの改善には、次のようなものがあります。

  • 即時または遅延バケットの同期。バケットに新しい項目が作成されると、すぐにルートフォルダに配置されます。バケットを適切な場所に移動するには、バケットを同期する必要があります。これを行うには、次の操作を行います。

    • 1つの製品を同期させることで、バケツ内の適切な場所にすぐに移動できます。これは、SynchronizeProductを1つの操作として呼び出すことによって行われます。 BucketManager.MoveItemIntoBucket(entityItem, root);

    • 一括同期を実行する。これは、SynchronizeProductsまたはSynchronizeProductListを呼び出すことによって行われますが、同期する必要がある多くの新しいアイテムが作成される可能性があります。一括同期を行う場合は、すべての新しい製品アイテムが処理されるまでバケットの同期を遅らせる方が高速です。製品バケットの同期に費やす時間をさらに短縮するために、新しい製品アイテムには一時的なバケットが使用されます。一時バケットは、すべての製品が処理され、バケットの内容がメインバケットに移動された後に同期されます。これにより、バケット内のすべての既存のアイテムに触れるのに費やす時間がなくなります。たとえば、1,000,000個の製品アイテムを含むバケットに1,000個の新しい製品アイテムを追加し、1,001,000個のアイテムを変更して変更されていないことを確認します。

    遅延バケットを有効にする方法の詳細については、「 遅延バケット同期」を参照してください。

  • マルチスレッド同期。デフォルトでは、製品、製造元、タイプ、リソース、部門、および仕様を並行して同期するために、1つのスレッドが作成されます。スレッドは、同期されるリポジトリごとに作成されます。 Sitecore.Commerce.Products.configファイルで使用するスレッドの数を構成できます。デフォルトは1です。

    <setting name="ProductSynchronization.NumberOfThreads" value="8" />
    メモ

    Sitecore CMSの問題により、複数のスレッドを使用するとSQLサーバーのデッドロック状況が発生する可能性があるため、デフォルト設定では1つのスレッドのみが指定されています。

  • インデックス作成、イベント、およびキャッシュの無効化。同期中は、リソースを節約し、同期が完了する前にインデックス作成を回避するため、アイテムイベントのトリガーとインデックス作成は無効になります。インデックス作成は、同期の完了後にオンになります。詳細については、「 インデックス作成」を参照してください。

  • 製品データを一度読み取って複数のパイプラインで処理すると、Sitecoreと外部システム間の呼び出し回数が減ります。Connectのすべての製品エンティティは、独自のパイプラインを使用して同期されるため、個々のパイプラインで外部システムからデータを読み取るのに自然と役立ちます。この場合、1つの製品を同期すると、システム間でかなりの量の呼び出しが発生する可能性があり、各呼び出しには時間とリソースが必要です。この設計では、製品データを最初に一度読み取って個々のサブパイプラインに渡して処理することを防ぐことはなく、システム間の呼び出し回数を減らすことができます。

  • リソースは外部に配置できます。Sitecoreのリソースは、メディア ライブラリにメディア アイテムとして保存されます。メディア アイテムはバイナリBLOBであり、Sitecoreにインポートするにはかなり大きく、時間がかかる場合があるため、リソースをSitecoreメディア ライブラリにインポートするか、単に外部で参照することができます。リソースがインポートされた場合、メディアライブラリの下のProductsというバケット化されたフォルダーに保存されます。インポートされていない場合は、リソース参照アイテムに格納されているURIで参照できます。Connectのデフォルト実装では、両方のシナリオがサポートされています。

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