Configuration des enregistrements de base de données PromotionArgument pour réduire les conflits de verrouillage

Vous pouvez configurer votre site afin d'utiliser les enregistrements PromotionArgument provenant de plusieurs tables de base de données afin de réduire les problèmes de verrouillage des tables de base de données, et d'améliorer les performances globales de magasin.

Avant de commencer

Vérifiez que les conditions suivantes sont respectées. Si ce n'est pas le cas, n'exécutez pas cette tâche :
  • Il n'existe aucune code personnalisé reposant sur des enregistrements dans la table de base de données PX_PROMOARG.
  • L'ajustement de promotion VoucherAdjustment n'est pas utilisé. Cet ajustement propose un bon de réduction à un client lorsqu'une promotion est appliquée et qu'une commande est soumise. Cet ajustement n'est pas utilisé par défaut. Pour que votre site utilise cet ajustement, une personnalisation est nécessaire.

Pourquoi et quand exécuter cette tâche

Lorsqu'une promotion est évaluée, les résultats de l'évaluation, appelés PromotionArguments, sont conservés dans la table de base de données PX_PROMOARG. Ces enregistrements sont utilisés chaque fois qu'une commande est passée et exécutent les actions suivantes :
  • Mise à jour des statistiques d'utilisation de promotion dans la table de base de données PX_USAGE.
  • Signalement des bons de réduction et des codes promotionnels.
  • Publication des bons de réduction et des codes promotionnels inutilisés.
  • Suppression des enregistrements de choix de récompense de promotion.
Sur les sites avec un niveau de trafic élevé, un verrouillage peu se produire sur la table PX_PROMOARG. Si ce verrouillage se produit lorsque les clients exécutent le flux de réservation, les performances risquent d'être affectées. Si aucune opération de personnalisation n'utilise les données de la table PX_PROMOARG, vous pouvez configurer votre moteur de promotion de sorte que les enregistrements PX_PROMOARG ne soient pas conservés dans la base de données. Si vous exécutez cette configuration, lorsqu'une commande est passée, les actions PromotionArgument sont effectuées en recherchant des enregistrements dans les tables ORDADJUST, CLCDPROMO, PX_CDUSAGE, PX_CDPROMO, PX_COUPON, PX_PROMOTION et non dans la table PX_PROMOARG. Cette configuration permet d'améliorer globalement mes performances de la vitrine.

Procédure

  1. Ouvrez une connexion à votre base de données et exécutez des l'instruction SQL d'insertion suivante :
    INSERT INTO CMDREG (STOREENT_ID, INTERFACENAME, CLASSNAME) 
    VALUES (0,'com.ibm.commerce.order.calculation.FinalizeDiscountCalculationUsageCmd', 
    'com.ibm.commerce.order.calculation.FinalizeDiscountCalculationUsageNoPromoargCmdImpl'); 
    Remarque : L'instruction SQL est divisée en plusieurs lignes pour des raisons d'affichage. Vous pourriez avoir besoin de formater l'instruction SQL sur une seule ligne pour l'exécuter avec succès.
  2. Modifiez la classe d'implémentation de PromotionArgumentPersistenceManager : Modifiez le fichier
    1. Accédez à votre répertoire workspace_dir/WC/xml/PromotionEngineConfiguration.
    2. Ouvrez le fichier WCSPromotionEngineConfig.xml pour édition.
    3. Localisez la classe d'implémentation de PromotionArgumentPersistenceManager. Remplacez la classe d'implémentation par :
      com.ibm.commerce.marketing.promotion.runtime.PromotionArgumentNoPromoargSessionBeanPersistenceManager
      Vérifiez que votre mise à jour de la classe d'implémentation PromotionArgumentPersistenceManager est similaire à ce qui suit :
      <PromotionArgumentPersistenceManager 
          impl="com.ibm.commerce.marketing.promotion.runtime.PromotionArgumentNoPromoargSessionBeanPersistenceManager" />
  3. Redémarrez le serveur.