Jump to content

Question sur table PS_CART_RULE_COMBINATION qui atteint plus 2 milliards de lignes


Recommended Posts

Bonjour,

Ceci concerne Prestashop en version 1.6.1.5

Suite au Black Friday et à la configuration d'un code promo avec de multiples régles paniers, la table PS_CART_RULE_COMBINATION a atteint la taille hallucinante de 2,25 millards de lignes pour 119 Go.

Je n'ai donc plus accés au régles paniers via le back office, et l'accés à la base commence a ramer sévère.

Le module de nettoyage de Prestashop étant sans effet , je pense à faire un TRUNCATE sur la table.

Ma question : Si je fais ça , je supprime uniquement les régles paniers / cumuls ? Les clients auront toujours accés à leur voucher et pourront les utiliser (anniversaire par exemple) ?

Et si vous avez une meilleur idée plus propre que le TRUNCATE , je prends ;)

Merci de votre aide.

Link to comment
Share on other sites

2 hours ago, _tech said:

Bonjour,

Cela doit être à cause d'un module type "oleacorner" pour faire des promos.
Il faut trier et supprimer sélectivement, via un script, via date, paniers validés ou non...

Merci de votre réponse.

Toutes les régles ont été faites par la fonction native de Prestashop (menu promotions > règles paniers)... mais avec ajout de restrictions / compatibilités avec d'autres régles... Du coup toutes les lignes de la table ont été multipliées de façon exponentielle.

Nous n'avons pas utilisé de module tiers pour les régles paniers (uniquement le module fidèlité qui peut en générer de façon automatique).

Vous me conseillez quoi au final ? Je vide la table ? ou y a un moyen de vider juste ce qui est expiré ?

je suis en train de delete via le back office les régles ayant atteintes leur date d'expiration, je suis passé à 392 millions de lignes. ça a lair pas mal. je vais continuer dans cette voie ! ;)

Edited by mattheoh (see edit history)
Link to comment
Share on other sites

16 hours ago, mattheoh said:

Derniere mise à jour, j ai aussi décidé de désintaller le module birthdaypresent qui semble être un des facteurs d'augmentation de taille de la table.

Cela fait quand même énormément de lignes juste de règles paniers, je suppose que le traffic est très important ?

Link to comment
Share on other sites

  • 2 weeks later...

Bonjour,

après l’exécution de pscleaner

vous pouvez exécuter la requête :

DELETE FROM `ps_cart_rule_combination` WHERE id_cart_rule_1 NOT IN ( SELECT id_cart_rule FROM `ps_cart_rule` ) OR id_cart_rule_2 NOT IN ( SELECT id_cart_rule FROM `ps_cart_rule` )

Attention la requête peut prendre plusieurs heures vu l'étendu de votre table et risque de rendre votre serveur très lent durant cette opération.

 

Sinon vous pouvez faire un INSERT SELECT avec la condition sur une nouvelle table ( copié la structure sur la nouvelle table ps_cart_rule_combination_new )

INSERT INTO ps_cart_rule_combination_new
SELECT * FROM ps_cart_rule_combination
WHERE id_cart_rule_1 IN ( SELECT id_cart_rule FROM `ps_cart_rule` ) AND id_cart_rule_2 IN ( SELECT id_cart_rule FROM `ps_cart_rule` ) ;

Puis renommez ps_cart_rule_combination en ps_cart_rule_combination_old

et renommez ps_cart_rule_combination_new en ps_cart_rule_combination

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...