Lock Pages in Memory

No SQL Server o Lock Pages in Memory serve para prevenir que o SQL Server faça paginação das páginas do buffer pool. Esta configuração é útil quando o impacto de performance está sendo causado pela quantidade de páginas recicladas do buffer pool.
De maneira bem simplificada, o Windows roda todos os seus processos em uma área dedicada de memória virtual que é conhecida como VAS (Virtual Address Space) e esta é dividida em duas regiões: a de sistema (Kernel) e a de usuário (app).
Na região do Kernel é mapeado diversas estruturas de sistema do OS como o file cache, paginado ou não.
No caso do User Mode Server alocasse os processos de aplicações que estão sendo executadas no momento, neste caso incluímos o SQL Server.
Quando habilitamos o Lock Page in Memory para a conta do SQL Server, estamos falando para que a alocação de buffer pool utilize a chamadas da função AWE API. Desta maneira, a memória é considerada locked, ou seja, não será paginável e deve estar na área de Kernel (physical memory server).
Tudo “parece flores”, mas a possibilidade de erro aparece quando o SQLOS não pode responder a tempo a solicitação da API do Windows QueryMemoryResourceNotification que é responsável pelo flag que reduz o consumo de memória. Simplificando, é uma pressão de memória causada por qualquer aplicativo ou anomalia do sistema que deixa o Windows sem memória (Out Of Memory). Sendo assim, o SQLOS não terá tempo para devolver memória ao processo do Windows.
Se houver uma configuração adequada do Max Server Memory, talvez seja possível contornar a possibilidade de Out Of Memory. A melhor recomendação é definir um valor baixo para este parâmetro e ir aumentando gradativamente juntamente deve ser acompanhado o contador Memory\Available MBytes.

Bibliografia
Denlaney, K. et al. Microsoft SQL Server 2012 Internals. 1a ed. Microsoft Press.
Microsoft Support. Disponível em: http://support.microsoft.com/kb/918483 Acesso em: 22 de dez 2018.
CSS SQL Server Engineers. Disponível em: http://blogs.msdn.com/b/psssql/archive/2012/03/20/setfileiooverlappedrange-can-lead-to-unexpected-behavior-for-sql-server-2008-r2-or-sql-server-2012-denali.aspx Acesso em: 22 de dez 2018.
Docs Microsoft. Disponível em: https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/enable-the-lock-pages-in-memory-option-windows?view=sql-server-2017 Acesso em : 22 de dez 2018.

Author: SQLCrespi

Rodrigo Crespi é MVP Data Platform, MCT, MCSE, MCSA, MCIT, MCDBA e MCP em SQL Server, possuí outras certificações em .NET Framework, Dynamics CRM e etc. Iniciou trabalhando com SQL Server na versão 6.5 na época como desenvolvedor, logo direcionou a sua carreira para a área de administração de bancos de dados. Atualmente é Sócio da CrespiDB – Soluções em Plataformas de Dados, além de professor universitário na Uniftec – Caxias do Sul Autor de diversos artigos publicados em sites e revistas sobre SQL Server e engenharia de software, mantem o canal SQLCrespi no Youtube, o blog SQLCrespi, além de ser dedicado ao SQL Server RS PASS Chapter Leader do grupo de profissionais em SQL Server do Rio Grande do Sul.

Deixe uma resposta

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.