Considero o Query Store a melhor ideia que o SQL Server da Microsoft teve nos últimos dez anos. Tenho medo de sentir muita falta disso quando mudar para o Postgres. Quais equivalentes o Postgres tem para o Query Store do SQL Server?
relate perguntas
-
SQL Server - Como as páginas de dados são armazenadas ao usar um índice clusterizado
-
Preciso de índices separados para cada tipo de consulta ou um índice de várias colunas funcionará?
-
Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?
-
Quais são as principais causas de deadlocks e podem ser evitadas?
-
Como determinar se um Índice é necessário ou necessário
A abordagem mais comum aqui seria "pg_stat_statements", que registra todas as consultas executadas no banco de dados Postgres desde a última redefinição:
https://www.postgresql.org/docs/current/pgstatstatements.html
Observe que isso não possui nenhum rastreamento de atividade ao longo do tempo (ou seja, "quantas consultas foram executadas na última hora") - para isso você precisa de um processo externo que capture instantâneos dos
pg_stat_statements
dados e faça uma comparação com o instantâneo gravado anteriormente, combinando consultas em(dbid, userid, queryid, toplevel)
.Você pode fazer o script sozinho ou usar uma ferramenta de terceiros existente que possa fazer isso por você. Consulte https://wiki.postgresql.org/wiki/Monitoring#Postgres-centric_monitoring_solutions para obter uma visão geral de algumas soluções que fazem isso.
Como você mencionou o PostgreSQL, acredito que esta é uma instância autogerenciada, para instâncias gerenciadas em nuvem, como se
Azure Managed PostgreSQL Service
elas tivessem seu próprio armazenamento de consultas personalizado.Para PostgreSQL autogerenciado, não há nada como
Query store
integrado. A visualização mais usada para obter estatísticas de consulta épg_stat_statements
aquela que você precisa ativar no arquivo de configuração.Embora pg_stat_statements registre métricas de execução de consulta, não há registro de data/hora de execução para filtrar as consultas executadas durante um período específico de tempo, pois pg_stat_statements é cumulativo e agregado com base no usuário e na consulta. Se você estiver procurando por esse mecanismo de filtragem, precisará configurar um monitoramento de série temporal em pg_stat_statements usando ferramentas como
pg_watch2
extensão para colocar esses dados em outro banco de dados para análise, o que a maioria das outras ferramentas de monitoramento também faz.Isso seria QueryStore
https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/concepts-query-store
Supondo que você esteja migrando para o Azure. Parte do problema com o Postgres é que ele é todo chamado de Postgres, mas diferentes fornecedores oferecem recursos muito diferentes e fazer com que as várias extensões funcionem juntas também é "interessante"