Eu tenho um grande banco de dados PostgeSQL 9.1 em uso de produção. Eu quero liberar algum espaço em disco. Há um índice grande e não tenho certeza se ele está sendo usado.
select * from pg_stat_all_indexes where indexrelname = 'myindexname';
relid | indexrelid | schemaname | relname | indexrelname | idx_scan | idx_tup_read | idx_tup_fetch
-------+------------+------------+-----------------+-----------------------+----------+--------------+---------------
20625 | 19563303 | public | mytablename | myindexname | 575598 | 281635 | 0
(1 row)
Este índice está sendo usado? idx_tup_fetch
é 0. Isso significa que não está sendo usado? Posso descartar o índice sem afetar nenhuma leitura/consulta?
Este banco de dados está em produção, uso no mundo real. Este índice foi reconstruído recentemente e tem sido usado no mundo real desde então. Se não foi usado desde então, nunca será.
O índice é de cerca de 130G e a tabela 50G.
A documentação afirma o seguinte:
Isso lhe dá duas possibilidades. O primeiro você excluiu reconstruindo o índice, portanto, pode-se supor que esse índice seja usado exclusivamente por meio de varreduras somente de índice e/ou varreduras de índice de bitmap. Você pode confirmar esta compra verificando a
EXPLAIN
saída de suas consultas que podem usar este índice.Você pode ler um pouco mais sobre varreduras de bitmap na página de depesz .