On 02/05/2013 11:21 AM, Alvaro Herrera wrote:
Marcos Ortiz escribió:

  SELECT idstat.relname AS table_name,
               indexrelname AS index_name,
               idstat.idx_scan AS times_used,
               pg_size_pretty(pg_relation_size(idstat.relname)) AS
table_size,
               pg_size_pretty(pg_relation_size(indexrelname)) AS
index_size,
               n_tup_upd + n_tup_ins + n_tup_del AS num_writes,
               indexdef AS definition
FROM pg_stat_user_indexes AS idstat
JOIN pg_indexes ON indexrelname = indexname
JOIN pg_stat_user_tables AS tabstat ON idstat.relname = tabstat.relname
WHERE idstat.idx_scan < 200
AND indexdef !~* 'unique'
ORDER BY idstat.relname, indexrelname;

Pero por lo que veo, en las versiones actuales de PostgreSQL,
pg_size_pretty usa el OID ahora para poder obtener el tamaño de
alguna relación.
Usa pg_relation_size(idstat.relid::regclass) en el primer caso, y
idstat.indexrelid::regclass en el segundo.
Probado y funciona bien

Usar el "relname" es una idea bien mala (podría tomar una tabla o índice
equivocado, si hay dos con el mismo nombre en distintos esquemas).
Recomendaría usar esto en todas las versiones, incluyendo anteriores a
9.1.
Anotado

Bueno, encontré una forma más fácil de encontrar los índices que menos se usan usando el campo idx_scan:

SELECT schemaname,
             relname,
             indexrelname,
             idx_scan
FROM pg_stat_user_indexes
ORDER BY idx_scan ;



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

Responder a