Monitoramento do uso de índices
Aprenda a monitorar a eficácia dos índices usando visões do sistema e a identificar índices não utilizados ou com baixo desempenho.
Monitoramento do uso de índices é uma aula grátis de Advanced PostgreSQL: Indexing, Partitioning, Replication no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Advanced PostgreSQL: Indexing, Partitioning, Replication, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Advanced PostgreSQL: Indexing, Partitioning, Replication inclui 4 aulas no total.
Partes desta aula ainda não foram traduzidas e aparecem em inglês.
Why Monitor Index Usage?
Indexes are powerful tools for speeding up queries, but they aren't free. They consume disk space and add overhead to data modifications (INSERT, UPDATE, DELETE).
Monitoring index usage helps us understand if our indexes are actually working for us or just taking up space.
Introducing `pg_stat_user_indexes`
PostgreSQL provides several system views to monitor database activity. For index usage, the pg_stat_user_indexes view is your best friend.
This view tracks statistics for indexes on user-defined tables, giving you insights into how often each index is being scanned.
Key Index Usage Metrics
When you query pg_stat_user_indexes, look out for these columns:
idx_scan: The number of times the index has been scanned.idx_tup_read: The number of index entries returned by scans.idx_tup_fetch: The number of live table rows fetched through the index.
These tell you how frequently and effectively an index is being used.
Finding Unused Indexes
The easiest win in index optimization is identifying indexes that are never used. An index with idx_scan = 0 is a strong candidate for removal.
Removing unused indexes can reduce disk space, speed up writes, and simplify database maintenance.
Demo: Querying Unused Indexes
Let's run a query to find all indexes that have never been scanned since the last statistics reset. Try running this example:
SELECT
relname AS table_name,
indexrelname AS index_name,
idx_scan
FROM pg_stat_user_indexes
WHERE idx_scan = 0
ORDER BY table_name, index_name;Beyond Unused: Underperforming Indexes
An index might be used (idx_scan > 0) but still be 'underperforming' if it's not chosen by the query planner when it should be, or if it's leading to many sequential scans on the table itself.
To spot these, we need to compare index usage with overall table access patterns.
Table Scan Insights with `pg_stat_user_tables`
The pg_stat_user_tables view provides statistics at the table level. Key columns here are:
seq_scan: Number of sequential scans initiated on this table.idx_scan: Number of index scans initiated on this table.
A high seq_scan count on a large table often indicates a missing or ineffective index.
Comparing Sequential vs. Index Scans
By comparing seq_scan and idx_scan from pg_stat_user_tables, we can identify tables that are frequently being scanned sequentially, even if indexes exist.
A high ratio of sequential scans to index scans on a table suggests potential indexing issues or queries that aren't utilizing available indexes.
Demo: Scan Ratio Query
This query calculates the percentage of sequential scans for each table. Tables with a high percentage of seq_scan might need attention.
SELECT
relname AS table_name,
seq_scan,
idx_scan,
(seq_scan * 100.0) / (CASE WHEN seq_scan + idx_scan = 0 THEN 1 ELSE seq_scan + idx_scan END) AS seq_scan_percent
FROM pg_stat_user_tables
WHERE seq_scan > 0
ORDER BY seq_scan_percent DESC;Quick Check
You're trying to find indexes that are consuming disk space but are never being used by any query. Which PostgreSQL system view would you primarily consult for this information?
Recap & Next Steps
Great job! In this lesson, you learned how to monitor index effectiveness using PostgreSQL's system views.
pg_stat_user_indexeshelps find unused indexes (idx_scan = 0).pg_stat_user_tablesreveals the balance between sequential and index scans on tables.- By combining these, you can identify indexes that are candidates for removal or further investigation.
In the next lesson, we'll dive into reindexing and maintaining index health!
Aprenda Advanced PostgreSQL: Indexing, Partitioning, Replication com um tutor de IA — grátis
Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.
- Cursos
- 11
- Aulas
- 44
Perguntas Frequentes
A aula “Monitoramento do uso de índices” é grátis?
Sim — o texto completo de “Monitoramento do uso de índices” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Advanced PostgreSQL: Indexing, Partitioning, Replication, atualize para CoddyKit PRO. O curso de Advanced PostgreSQL: Indexing, Partitioning, Replication inclui 4 aulas no total.
O que vou aprender em “Monitoramento do uso de índices”?
Aprenda a monitorar a eficácia dos índices usando visões do sistema e a identificar índices não utilizados ou com baixo desempenho. Você pratica Advanced PostgreSQL: Indexing, Partitioning, Replication com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Advanced PostgreSQL: Indexing, Partitioning, Replication?
Nenhuma experiência prévia é necessária. Advanced PostgreSQL: Indexing, Partitioning, Replication no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.
Quanto tempo leva a aula “Monitoramento do uso de índices”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Advanced PostgreSQL: Indexing, Partitioning, Replication?
Sim. Cada aula de Advanced PostgreSQL: Indexing, Partitioning, Replication inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Analisando planos de consulta com EXPLAIN
- Monitoramento do uso de índices
- Reindexação e manutenção de índices
- Ajuste do custo dos índices com ANALYZE e estatísticas