A métrica SQL Server Page Life Expectancy (PLE) há muito é considerada um indicador-chave de desempenho para DBAs que analisam a integridade geral de suas instâncias de banco de dados. O PLE mostra se o sistema está sob pressão de memória interna usando contadores fornecidos pelo objeto Buffer Manager.
Uma análise mais detalhada da expectativa de vida da página
PLE é uma medida do tempo (em segundos) que uma página de arquivo de dados deve permanecer no pool de buffers do SQL Server. Essa métrica não é uma agregação ou acumulação, mas simplesmente um valor pontual que os DBAs consultarão no Buffer Manager.
O SQL Server lê apenas as páginas de dados do pool de buffers (ou seja, leitura lógica), portanto, se a página não estiver no pool de buffers, ela a encontrará no disco (ou seja, leitura física) e moverá a página para o pool de buffers para ele pode fazer uma leitura lógica. Este é um processo demorado e pode afetar negativamente o desempenho.
O que é um valor PLE “bom”?
Um valor PLE alto significa que uma página permanece no pool de buffers por mais tempo, portanto, é menos provável que o SQL Server precise ir ao disco procurando a página de dados, o que torna o sistema mais rápido.
Historicamente, os DBAs consideravam 300 segundos (cinco minutos) o ponto ideal do PLE. No entanto, esse número é bastante arbitrário. A Microsoft recomendou 300 como o padrão PLE nos anos 2000, quando a memória era limitada.
Hoje, os DBAs não se concentram em um número “certo” porque os buckets de memória são padrão na maioria dos sistemas. Não é incomum que o SQL Server seja executado em um sistema que tenha TBs de RAM à sua disposição, então os DBAs adotaram uma abordagem estereotipada para identificar um valor PLE “bom”:
Expectativa de vida da página =300 segundos para cada 4 GB de RAM em seu servidor
No entanto, é sem dúvida mais importante monitorar continuamente os valores de PLE quanto a alterações na consistência para que você possa identificar problemas de memória e resolvê-los rapidamente.
Se você trabalha com um grande volume de dados, é importante observar que servidores maiores geralmente têm vários PLEs. Cada nó de acesso não uniforme à memória (NUMA) obtém seu próprio valor de PLE e, em seguida, esses números são calculados para obter o valor de PLE do servidor. Por exemplo, pegue o valor PLE do nó x 1.000 (faça isso para todos os nós NUMA). Adicione os valores de todos os nós, divida pelo número total de nós NUMA e divida novamente por 1.000. Isso lhe dará o servidor PLE.
Como determinar se há um problema com a expectativa de vida da página
As flutuações no PLE são normais porque são baseadas na carga de trabalho. O rastreamento de tendências altas, médias e baixas pode mostrar se determinados processos, como varreduras de tabela ou liberação do cache de buffer, precisam ser ajustados para melhorar o PLE.
Uma boa maneira de determinar se há um problema é se a faixa de valores de PLE normal cair e permanecer baixa. Isso indica que provavelmente há demanda e pressão aumentadas no pool de buffers.
Isso significa que você precisa jogar um pouco mais de memória no problema? Pode ser. Talvez não.
Solução de problemas de baixa expectativa de vida útil da página do SQL Server
Existem várias razões pelas quais os valores de PLE podem estar tendendo para baixo. É importante solucionar o problema porque a solução não é a mesma para todas as causas raiz. Aqui estão três dos culpados com maior probabilidade de retardar seu PLE:
Memória insuficiente
Se a carga de trabalho estiver aumentando constantemente e o PLE estiver diminuindo, você provavelmente está com pouca memória. Adicionar memória pode ajudar a aumentar o PLE, mas não fará com que as consultas sejam executadas com mais eficiência.
Operações caras
Se a carga de trabalho não mudou, mas há uma demanda maior no pool de buffers, pode ser que os valores discrepantes estejam usando mais memória. Verifique se há trabalhos de manutenção em execução ou recompilações de índice em andamento.
Estatísticas obsoletas
Estatísticas obsoletas podem causar alterações no plano de consulta. Isso aumenta a demanda no pool de buffers, fazendo com que operações caras sejam executadas porque não são sincronizadas com novas estatísticas.
Como corrigir a baixa expectativa de vida da página otimizando as consultas
A melhor maneira de corrigir valores baixos de PLE é ir até a origem e otimizar suas consultas do SQL Server. Isso vem com um bônus adicional porque a otimização de consultas melhorará o desempenho geral do seu sistema ao mesmo tempo.
Há várias coisas que você deseja fazer que o ajudarão a otimizar as consultas para a melhoria máxima do PLE:
- Descartar índices não utilizados
- Mesclar índices duplicados
- Procure consultas grandes
- Saiba o que está no buffer pool
- Desfragmentar índices
- Atualizar estatísticas
- Limpar dados
Acompanhamento da expectativa de vida da página ao longo do tempo
Embora o PLE seja uma métrica pontual, observar o PLE ao longo do tempo é uma maneira importante de identificar problemas antecipadamente e corrigi-los rapidamente antes que o desempenho seja afetado significativamente.
Existem várias formas de monitorar a métrica do PLE ao longo do tempo e identificar as consultas cujas transações causam uma grande quantidade de leituras. DMVs e eventos estendidos no SQL Server são os métodos testados e comprovados e têm sido fundamentais nesse processo de coleta de dados. Mas eles também são manuais e demorados, e oferecem benefícios limitados quando se trata de obter uma perspectiva histórica sobre o desempenho da métrica ao longo do tempo.
Uma solução comercial como o Spotlight Cloud não apenas oferece aos DBAs a capacidade de rastrear PLE ao longo do tempo, mas também analisa a carga de trabalho para identificar quais consultas e atividades atípicas estão causando pressão no buffer pool para que você possa isolar e corrigir o problema. problema e otimizar o desempenho do SQL Server.
Originalmente publicado em abril de 2019 e atualizado em setembro de 2020.