Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 17/07/2018 18:32:53
- Indaa
- Membre
Delete too long
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
#2 17/07/2018 21:49:18
- gleu
- Administrateur
Re : Delete too long
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
#3 18/07/2018 10:31:24
- Indaa
- Membre
Re : Delete too long
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
#4 18/07/2018 10:42:24
- gleu
- Administrateur
Re : Delete too long
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