O PostgreSQL, o quarto banco de dados e DBMS mais popular do ano em 2017, explodiu em popularidade entre as comunidades de desenvolvimento e banco de dados em todo o mundo. Roubando participação de mercado dos líderes Oracle, MySQL e Microsoft SQL Server, a hospedagem PostgreSQL também é altamente alavancada por novos negócios em espaços interessantes como IoT, comércio eletrônico, SaaS, análise e muito mais.
Então, quais são as tendências no gerenciamento do PostgreSQL?
Participamos do PostgresOpen em San Francisco no mês passado para descobrir as últimas tendências dos próprios especialistas.
Tarefas de gerenciamento do PostgreSQL mais demoradas
Então, o que está consumindo seu tempo no gerenciamento do PostgreSQL? Embora existam milhares de tarefas envolvidas no gerenciamento de suas implantações de produção do PostgreSQL, o gerenciamento de consultas foi o líder forte com mais de 30% dos entrevistados.
Gerenciar espaço ficou em segundo lugar, com 15% dos usuários do PostgreSQL achando que essa é a tarefa mais difícil, seguida por replicação, atualizações e monitoramento. 23% dos usuários do PostgreSQL se enquadram na categoria “Todos os outros”, consistindo em tarefas como patches, recuperações, particionamento e migrações.
Gerenciando o detalhamento das consultas do PostgreSQL
Com a liderança no gerenciamento de consultas do PostgreSQL, nos aprofundamos para ver quais tarefas específicas estavam consumindo seu tempo. Os resultados se espalham por todo o processo de gerenciamento de consultas, desde a estruturação na configuração até a otimização após a análise.
Para explicar melhor, vamos começar pelo início do processo de gerenciamento de consultas:
Estrutura da consulta
O menor segmento, gerenciando estruturas de consulta, respondeu por 22% das respostas de usuários do PostgreSQL que selecionaram as consultas como sua tarefa de gerenciamento mais demorada.
Antes de começar, você precisa criar um plano de consulta do PostgreSQL em torno de seus clusters para combinar sua estrutura de consulta com suas propriedades de dados. Eles consistem em nós, variando de nós de varredura no nível inferior para retornos de tabela de linha bruta, juntamente com linhas que não são de tabela, como valores.
Análise de consulta lenta
Depois de estabelecer sua estrutura, a próxima etapa é analisar suas consultas para identificar consultas de execução lenta que podem afetar o desempenho do seu aplicativo. Por padrão, “consultas lentas” são definidas como consultas que demoram mais de 100 ms.
Otimizando consultas
Agora que você identificou suas consultas lentas, o trabalho real começa – otimizar suas consultas PostgreSQL. O ajuste de desempenho do Postgres pode ser uma tarefa horrível, mas com identificação e análise adequadas, você pode aprimorar os gargalos e fazer as alterações de consulta necessárias e adicionar índices onde necessário para melhorar sua execução. Aqui está um ótimo artigo sobre consultas de ajuste de desempenho no PostgreSQL.
Últimas tendências do PostgreSQL:tarefas mais demoradas e métricas importantes para rastrearClique para tweetar
Métricas mais importantes para acompanhar o desempenho do PostgreSQL
Agora que identificamos a tarefa de gerenciamento do PostgreSQL mais demorada, vamos analisar mais detalhadamente as métricas importantes que os usuários do PostgreSQL acompanham para otimizar seu desempenho.
Os resultados mais importantes das métricas do PostgreSQL foram significativamente mais uniformes do que as tarefas de gerenciamento, resultando em um empate de quatro vias entre estatísticas de replicação, uso de CPU e RAM, transações por segundo (TPS) , e consultas lentas:
Estatísticas de replicação
Monitorar o status de replicação do PostgreSQL é uma tarefa crucial para garantir que suas replicações sejam executadas corretamente e que suas implementações de produção permaneçam altamente disponíveis. O processo de replicação deve ser personalizado para melhor atender às necessidades do seu aplicativo, e o monitoramento contínuo de endpoint é a melhor maneira de garantir que seus dados estejam seguros e prontos para recuperação.
É importante acompanhar as métricas nos servidores em espera e nos servidores primários. Seus servidores em espera devem ser monitorados para replicação de entrada e status de recuperação, e seus servidores primários devem ser monitorados para replicação de saída e slots de replicação. Se você estiver usando a replicação de streaming PostgreSQL, os slots de replicação nem sempre são necessários. A replicação de streaming garante a disponibilidade imediata de dados em seus servidores em espera e é ideal para servidores de baixo TPS.
Uso de CPU e RAM
Acompanhar o uso de CPU e RAM (memória) são métricas cruciais a serem monitoradas para garantir a integridade de seus servidores PostgreSQL. Se o uso da CPU for muito alto, seu aplicativo sofrerá lentidão, fazendo com que seus usuários sofram. Muitas vezes, é resultado de consultas mal otimizadas ou até mesmo paralelismos de consulta altos. O monitoramento da RAM é muito importante para garantir que você tenha espaço em disco suficiente e para entender exatamente para que sua RAM está sendo usada. É recomendado ter aproximadamente 25% de sua memória alocada para shared_buffers. O PostgreSQL também padroniza o tamanho do buffer da memória de trabalho para 4 MB, o que geralmente é muito pouco e resulta em tempos de execução altos.
Transações por segundo
O monitoramento do número de transações por segundo permite determinar a carga no sistema e a taxa de transferência atual. Ao analisar essa métrica, pode-se decidir dimensionar o sistema de acordo para atingir a taxa de transferência desejada. Você também pode determinar como uma alteração nas definições de configuração ou recursos do sistema afeta a taxa de transferência.
Consultas lentas
Consultas ineficientes podem diminuir o desempenho do PostgreSQL mesmo se o sistema estiver configurado com recursos adequados. É sempre uma boa prática analisar essas consultas ineficientes e corrigi-las. O PostgreSQL fornece um parâmetro chamado log_min_duration_statement . Quando definido, faz com que a duração de cada instrução concluída seja registrada se a instrução for executada por pelo menos o número especificado de milissegundos. Uma vez que as consultas lentas são obtidas, você pode executar EXPLAIN ANALYZE para entender o plano de execução. Isso permitirá que você acompanhe o problema e otimize a consulta de acordo. Portanto, monitorar as consultas lentas regularmente evitará a lentidão no desempenho.
Encontre-nos na próxima semana no evento PostgresConf Silicon Valley 2018, onde esperamos descobrir mais informações sobre as tendências no espaço de gerenciamento do PostgreSQL. Se você tiver dúvidas ou comentários, sinta-se à vontade para compartilhá-los conosco aqui em nossos comentários ou no Twitter em @scalegridio.