El 07/11/2012 05:51, Agustin Lopez escribió:

Hola!

Gracias por la respuesta, Fernando.

Pero incido en el problema, que no me lo resuelves.

Me gustaría saber si hay alguna manera de saber qué índice está dañado.
Es raro que Postgres no tenga alguna manera de averiguarlo.

Saludos,
Agustín

El 05/11/2012 15:06, Rodriguez Fernando escribió:
El 30/10/2012 05:12, Agustin Lopez escribió:

Hola a todos!

Tengo una DB en postgresql 9.0.3 que de vez en cuando baja su rendimiento de forma notable (la hace inoperativa), por ejemplo tras un corte de luz o tras
un update masivo. Para solucionar el problema debo reindexar toda la DB
para lo cual necesito varias horas y no es lo ideal. (Todo esto pasaba también
con versiones anteriores de Postgres).

Las preguntas son:

-Hay alguna forma / herramienta para chequear los indices y sólo reindexar el que esté mal?
-Hay alguna herramienta para lanzar en paralelo el reindex de la DB?

Gracias,
Agustin


-
Enviado a la lista de correo pgsql-es-ayuda ([email protected])
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda


Si los update masivos tocan campos de indices seria bueno reorganizarlos, a menos que no sepas que afecta. En cuanto a las caídas abruptas del sistemas, una solución sería una ups. Otra idea podria se configurar que logue las consultas que demoran mas de un tiempo determinado (log_min_duration_statement)
Te envio un link que encontré para el caso
http://heatware.net/databases/how-to-find-log-slow-queries-postgresql/



proba consultar pg_index http://www.postgresql.org/docs/9.2/static/catalog-pg-index.html

indisvalid bool If true, the index is currently valid for queries. False means the index is possibly incomplete: it must still be modified by INSERT/UPDATE operations, but it cannot safely be used for queries. If it is unique, the uniqueness property is not true either.

indisready bool If true, the index is currently ready for inserts. False means the index must be ignored by INSERT/UPDATE operations.



mas datos del catalogo http://www.postgresql.org/docs/9.2/static/catalogs.html

select a.relname as nombreindice, indisvalid, indisready, b.relname as nombretabla
from pg_index
inner join pg_class a on (indexrelid= a.oid)
inner join pg_class b on (indrelid=b.oid);


saludos Fernando

Responder a