Jose Alberto Sanchez Nieto escribió: > Hola, ¿el analyze necesita que no haya transacciones pendientes como > el idle transaction?, creía que era el vacum full el que necesitaba > que no hubiese transacciones pendientes pero con el analyze si que > se podía.
Si una transacción queda abierta tomando locks que entran en conflicto con el lock que adquiere vacuum, naturalmente se va a quedar pegado. Vacuum toma un lock que es bien liviano; no entra en conflicto con SELECT, INSERT, UPDATE, etc. Pero sí entra en conflicto con otras cosas como ALTER TABLE, o incluso otro VACUUM en la misma tabla. VACUUM FULL toma un lock más agresivo, que bloquea incluso SELECT. Nota: VACUUM y ANALYZE son dos operaciones independientes y separadas. Existe una opción a VACUUM que es la opción ANALYZE, que hace ambas cosas simultáneamente. Puedes ejecutar VACUUM <tabla> y va a hacer sólo un vacuum normal. Puedes ejecutar ANALYZE <tabla> y va a hacer sólo un analyze. > La aplicación trabaja con hibernate y este el el que hace > las consultas, he comprobado que haciendo desde la aplicación un > simple select no sé como lo genera hibernate pero ya veo en el > postgres un idle transaction para ese select, ahí ejecuto el analyze > y se queda bloqueado, mato la sesión y continua. ¿Hay algún > parámetro que pueda ejecutar antes del analyze para terminar con > todas estos idle transaction y que se ejecute el analyze > correctamente? Creo que debes examinar el código con cuidado para que no queden transacciones abiertas en ningún momento, y particularmente si tienen locks. -- Alvaro Herrera Valdivia, Chile Geotag: -39,815 -73,257 "Hoy es el primer día del resto de mi vida" -- TIP 9: visita nuestro canal de IRC #postgresql-es en irc.freenode.net