TRUNCATE
doit vider shared_buffers
pour la table tronquée, et il doit dissocier l'ancien fichier, ce qui peut être lent sur les systèmes de fichiers avec une suppression lente comme ext3
.
1,5 heure est assez extrême cependant, car nous parlons généralement de secondes au maximum. Il est fort probable que vous ayez d'autres sessions détenant des verrous sur la table qui empêchent le TRUNCATE
de procéder. Voir pg_catalog.pg_locks
et pg_catalog.pg_stat_activity
.
L'article du wiki PostgreSQL sur la surveillance des verrous devrait être utile.
Voir aussi :Vitesse de troncation Postgresql