Vous n'êtes pas identifié(e).
Pages : 1
Bonjour,
J'ai testé la suppression de 35k rows sur une table "table_lob" , résultat 3h30 !!! c'est vraiment trop long et j'aimerai comprendre pourquoi
Le contexte :
- Sur la table "table_lob" il y a un trigger qui fait : AFTER DELETE ON table_lob FOR EACH ROW EXECUTE PROCEDURE delete_lo()
- Un autovaccum (prevent wraparound) en cours sur la table pg_largeobjet
Je pense que le trigger y est pour quelques chose , et j'aimerai savoir si l'autovacuum sur pg_largeobject a aussi des conséquences sur le temps du Delete ?
Je suis aussi ouvert à toute proposition pour améliorer mon temps de suppression.
Merci d'avance
Hors ligne
Oui, l'autovacuum a des conséquences sur la durée du delete. Dans le cas d'un VACUUM pour wraparound, la table complète est réécrite, donc je suppose que ce VACUUM a bloqué temporairement l'exécution de la fonction trigger, et du coup le DELETE.
Guillaume.
Hors ligne
Merci Guillaume,
Du coup le jour J j'aimerai :
- cancel cet autovacuum qui tourne depuis très longtemps
- delete les rows de ma table "table_lob"
- Puis lancer un Vacuumfull sur pg_largeobjet
J'aimerai savoir si tu as une solution pour empêcher un autovacuum(prevent wraparound) de se déclancher ???
Merci
Hors ligne
Vous ne pouvez pas annuler un autovacuum en mode wraparound (ou plus exactement, il se ré-exécutera immédiatement après). Et donc non, pas de solution pour empêcher un "autovacuum(prevent wraparound)". Il ne faut surtout pas le faire, ce serait très dangereux. Mais de toute façon, ce mode sur l'autovacuum est très rare.
Guillaume.
Hors ligne
Pages : 1