TRUNCATE
tiene que vaciar shared_buffers
para que la tabla se trunque, y tiene que desvincular el archivo anterior, lo que puede ser lento en sistemas de archivos con eliminación lenta como ext3
.
Sin embargo, 1,5 horas es bastante extremo, ya que generalmente estamos hablando de segundos como máximo. Es muy probable que tenga otras sesiones con bloqueos en la tabla que impidan el TRUNCATE
de proceder. Ver pg_catalog.pg_locks
y pg_catalog.pg_stat_activity
.
El artículo wiki de PostgreSQL sobre la supervisión de bloqueos debería ser útil.
Consulte también:Velocidad de truncamiento de Postgresql