ID do artigo: 918483 - Última revisão: quarta-feira, 27 de julho de 2011 - Revisão: 2.0

Como reduzir a paginação de memória de pool do buffer na versão de 64 bits de SQL Server

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.

Nesta página

Expandir tudo | Recolher tudo

Sumário

Microsoft SQL Server de realiza o gerenciamento de memória dinâmica com base nos requisitos de memória de atividades no sistema e a carga atual. No Windows Server 2003 ou um Windows XP ou sistema de versão posterior, o SQL Server pode usar os mecanismos de notificação de memória são fornecidos pela API do Windows QueryMemoryResourceNotification. Em um sistema baseado no Microsoft Windows 2000 Server, o SQL Server periodicamente calcula a memória física livre no sistema usando a API nativa do Windows. SQL Server com base nessas informações, a partir de API do Windows QueryMemoryResourceNotification ou o cálculo de memória, responde a situação atual de memória em um sistema específico. Isso fornece os seguintes benefícios:
  • O sistema não paginação o conjunto de trabalho do processo de SQL Server.
  • As páginas do banco de dados necessários estão disponíveis na memória para reduzir as necessidades de e/S físicas.
Para obter mais informações, consulte o tópico "gerenciamento de memória dinâmica" e o tópico "Opções de memória do servidor" no Books Online.

Sintomas

Em edições de 64 bits do SQL Server, vários problemas podem ocorrer. Por exemplo, os seguintes problemas podem ocorrer:
  • O desempenho do SQL Server diminui de repente.
  • Um computador que esteja executando o SQL Server pára de responder por um curto período.
  • Um tempo limite ocorre para aplicativos que se conectam a SQL Server.
  • Problemas ocorrem quando você executa comandos simples ou usa aplicativos no sistema.
Se você instalou o SQL Server 2005 Service Pack 2 (SP2) ou uma versão posterior, uma das seguintes mensagens de erro é registrada no log de erros SQL Server quando esses problemas ocorrem:
Mensagem de erro 1
data hora parte significativa da spid1s de memória de processo do sql server sofreu page out. Isso pode resultar em degradação de desempenho. Duração: 0 segundos. Conjunto de trabalho (KB): 1086400, comprometida (KB): 2160928, utilização de memória: 50%.
Mensagem de erro 2
data hora parte significativa da spid1s de memória de processo do sql server sofreu page out. Isso pode resultar em degradação de desempenho. Duração: 315 o segundos. Conjunto de trabalho (KB): 410156, comprometida (KB): 2201296, utilização de memória: 18%.
Mensagem de erro 3
data hora parte significativa da spid1s de memória de processo do sql server sofreu page out. Isso pode resultar em degradação de desempenho. Duração: 646 o segundos. Conjunto de trabalho (KB): 901904, comprometida (KB): 2215752, utilização de memória: 40%.

A equipe de suporte de Microsoft SQL Server também observou a mensagens de erro adicionais ou avisos são registrados no log de erros de SQL Server ou nos logs de eventos do Windows. Essas mensagens semelhante ao seguinte:
2009-05-05 15:43:56.01 Server      Resource Monitor (0x13c43) Worker 0x0412C1E8 appears to be non-yielding on Node 0. Memory freed: 34152 KB. Approx CPU Used: kernel 171 ms, user 140 ms, Interval: 125093.

2009-05-05 12:54:52.18 Server      * *******************************************************************************
2009-05-05 12:54:52.18 Server      * BEGIN STACK DUMP:
2009-05-05 12:54:52.18 Server      *   05/05/08 12:54:52 spid 0
2009-05-05 12:54:52.18 Server      * Non-yielding Resource Monitor
2009-05-05 12:54:52.18 Server      * *******************************************************************************

2009-06-10 09:13:53.44 Server      * *******************************************************************************
2009-06-10 09:13:53.44 Server      * BEGIN STACK DUMP:
2009-06-10 09:13:53.44 Server      *   06/10/09 09:13:53 spid 0
2009-06-10 09:13:53.44 Server      * Non-yielding IOCP Listener
2009-06-10 09:13:53.44 Server      * *******************************************************************************

2009-06-10 09:13:55.85 spid2s      LazyWriter: warning, no free buffers found.

2009-07-15 13:27:45.35 spid4s      AppDomain xx (SQLCLR.dbo[runtime].xx) is marked for unload due to memory pressure.
2009-07-15 13:27:45.35 spid4s      AppDomain xx (SQLCLR.dbo[runtime].xx) unloaded.

2009-07-15 13:37:51.42 Logon       Error: 17189, Severity: 16, State: 1.
2009-07-15 13:37:51.42 Logon       SQL Server failed with error code 0xc0000000 to spawn a thread to process a new login or connection. Check the SQL Server error log and the Windows event logs for information about possible related problems. [CLIENT: xx.xxx.xx.xx]

Event Type:	Error
Event Source:	SQLBrowser
Event ID:	8
Description: The SQLBrowser service was unable to process a client request. 
Esses avisos ou mensagens de erro adicionais podem aparecer junto com o erro "uma parte significativa da memória do processo do sql server sofreu page out" mensagem. Em vários casos, esses avisos ou mensagens de erro adicionais não apareceu junto com a mensagem de erro.

Se você perceber que uma dessas mensagens de erro ou avisos, considere a SQL Server trabalhando a paginação do conjunto que será discutida neste artigo como uma possível causa, mas não como a única. Esses avisos ou mensagens de erro adicionais podem fazer logon devido a várias condições ou causas.

Causa

Esse problema ocorre porque as páginas do sistema operacional Windows fora do conjunto de trabalho do processo de SQL Server.

Estas mensagens de erro são registradas quando o conjunto de trabalho de um processo de SQL Server atinge 50 por cento ou menos da memória que está comprometida com o processo de SQL Server. Você pode usar essas mensagens de erro para determinar o caso em que o desempenho de SQL Server diminui significativamente porque as páginas do sistema operacional Windows fora do conjunto de trabalho do processo de SQL Server. Além disso, estas mensagens de erro são registradas a cada cinco minutos durante os primeiros 30 minutos. Depois de 30 minutos, a freqüência dessas mensagens de erro dobra até a freqüência de atinge o máximo de um dia.

Quando esse problema ocorre, você poderá notar que o conjunto de trabalho de outros aplicativos no sistema é paginado também ao mesmo tempo.
Para obter mais informações, visite o seguinte site da Microsoft:
http://blogs.msdn.com/psssql/archive/2007/05/31/the-SQL-Server-Working-Set-Message.aspx (http://blogs.msdn.com/psssql/archive/2007/05/31/the-sql-server-working-set-message.aspx)
Além disso, há um problema conhecido no SQL Server, no qual você pode receber uma instância desta mensagem de erro. A mensagem de erro é registrada no log de erros de SQL Server durante o processo de inicialização de SQL Server. A mensagem de erro pode ser um aviso de false. Portanto, talvez não indique que realmente ocorreu aparar do conjunto de trabalho. Para obter mais informações, visite o seguinte site da Microsoft:
http://blogs.msdn.com/psssql/Archive/2009/05/12/SQL-Server-Reports-Working-Set-Trim-Warning-message-during-Early-Startup-Phase.aspx (http://blogs.msdn.com/psssql/archive/2009/05/12/sql-server-reports-working-set-trim-warning-message-during-early-startup-phase.aspx)

Como Contornar

Antes de tentar contornar esse problema, execute as etapas na seção "Como resolver esse problema" para resolver esse problema.

Se você ainda enfrentar esse problema, você pode impedir que o sistema operacional Windows paginação da memória de pool de buffer do processo de SQL Server, bloqueando a memória alocada para o pool de buffer na memória física. Você bloquear a memória, atribuindo a Bloquear páginas na memória direito de usuário a conta de usuário que é usado como a conta de inicialização do serviço de SQL Server.

Observação Para edições de 64 bits do SQL Server, apenas SQL Server Enterprise Edition pode usar o Bloquear páginas na memória direito de usuário. Isso é aplicável para o SQL Server 2005 [RTM, SP1, SP2, SP3] e SQL Server 2008 [RTM e SP1]. SQL Server 2008 SP1 cumulativa atualização 2 e 4 de atualização do SQL Server 2005 SP3 cumulativa introduzem suporte para edições de SQL Server padrão usar o Bloquear páginas na memória direito de usuário. Para obter mais informações sobre o suporte para páginas bloqueadas a sistemas de 64 bits, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
970070  (http://support.microsoft.com/kb/970070/ ) Suporte para páginas bloqueadas no SQL Server 2005 Standard Edition 64 bits de sistemas e em sistemas de SQL Server 2008 Standard Edition de 64 bits
Para atribuir o Bloquear páginas na memória direito de usuário, siga estas etapas:
  1. Clique em Iniciar, clique em Executar, tipo gpedit. msce então clique em OK.

    Observação ODiretiva de grupo a caixa de diálogo é exibida.
  2. Expanda Computador Configuraçãoe então expanda Configurações do Windows.
  3. Expanda Configurações de segurançae então expandaDiretivas locais.
  4. Clique em Atribuição de direitos de usuárioe clique duas vezes Bloquear páginas na memória.
  5. No Configuração de diretiva de segurança localcaixa de diálogo, clique em Adicionar usuário ou grupo.
  6. No Selecione usuários ou grupos caixa de diálogo Adicione a conta que tem permissão para executar o arquivo Sqlservr. exe e, em seguida, clique emOK.
  7. Fechar o Diretiva de grupo caixa de diálogo.
  8. Reinicie o serviço de SQL Server.
Após atribuir a Bloquear páginas na memória direito de usuário e você reiniciar o serviço de SQL Server, o sistema operacional Windows não processam páginas de memória de pool de buffer dentro do SQL Server. No entanto, o sistema operacional Windows pode despaginar ainda a memória de pool do nonbuffer dentro do processo de SQL Server.

Você pode validar que o direito de usuário é usado pela instância do SQL Server, certificando-se de que a seguinte mensagem é gravada no Log de erros de SQL Server na inicialização:
Usando páginas bloqueadas para o pool de buffer
Esta mensagem só se aplica a edições de 64 bits do SQL Server. Para obter mais informações sobre essa mensagem do log de erros, visite o seguinte site da Microsoft:
http://blogs.msdn.com/psssql/archive/2007/10/18/do-i-have-to-Assign-the-Lock-Privilege-for-local-System.aspx (http://blogs.msdn.com/psssql/archive/2007/10/18/do-i-have-to-assign-the-lock-privilege-for-local-system.aspx)
Quando as páginas do sistema operacional Windows fora da memória de pool do nonbuffer, você ainda pode encontrar problemas de desempenho. No entanto, as mensagens de erro mencionadas na seção "Sintomas" não estão conectadas no log de erros de SQL Server. Esse comportamento ocorre porque o conjunto de trabalho de um processo de SQL Server normalmente não alcança 50 por cento ou menos de memória confirmada.

Mais Informações

Como solucionar este problema.

Para solucionar esse problema, siga estas etapas:
  1. Para resolver os problemas conhecidos que fazem com que o sistema operacional Windows, a página de conjunto de trabalho do processo de SQL Server, aplica os hotfixes descritos nos seguintes artigos da Base de Conhecimento da Microsoft.

    Observação Os hotfixes são cumulativos. Uma versão mais recente de um hotfix contém as versões anteriores do hotfix.
    • Microsoft encontrou um problema que pode causar a edição de 64 bits da SQL Server conjunto seja de trabalho aparada. Para obter mais informações, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
      905865  (http://support.microsoft.com/kb/905865/ ) Os tamanhos dos conjuntos de trabalho de todos os processos em uma sessão de console podem ser cortados quando você usar os serviços de Terminal para fazer logon ou logoff em um computador que esteja executando o Windows Server 2003
    • Computadores que estão executando o Windows Server 2003 pode ser muito agressivos quando eles cache. buffers sujos se houver um aplicativo executando e/S em buffer, como, por exemplo, um arquivo operação de cópia. Esse comportamento pode causar o conjunto de trabalho em SQL Server para ser aparada. Para obter mais informações, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
      920739  (http://support.microsoft.com/kb/920739/ ) Você pode enfrentar uma diminuição no desempenho geral do sistema quando você estiver copiando arquivos maiores que aproximadamente 500 MB no Windows Server 2003 SP1 ou no Windows Server 2003 SP1
    • O SQL Server conjunto de trabalho pode ser cortado quando o sistema está usando alguns recursos avançados do TCP. Para obter mais informações, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
      942861  (http://support.microsoft.com/kb/942861/ ) Mensagem de erro quando um aplicativo se conecta de SQL Server em um servidor que esteja executando o Windows Server 2003: "Erro geral na rede", "Falha de link de comunicação" ou "Um erro de nível de transporte"
    • Em um computador multiprocessador que esteja executando o Windows Server 2003, o processo do sistema pode consumir a maior parte da memória de sistema disponíveis. Para obter mais informações, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
      942486  (http://support.microsoft.com/kb/942486/ ) O processo do sistema pode consumir a maior parte da memória de sistema disponíveis em um computador multiprocessador que esteja executando o Windows Server 2003
  2. Se um driver de dispositivo usa o MmAllocateContiguousMemory função, e se ele define o valor da HighestAcceptableAddress o parâmetro para menos de 4 gigabytes (GB), o sistema operacional Windows pode despaginar o conjunto de trabalho do processo de SQL Server de 64 bits. Para resolver esse problema, contate o fornecedor do driver de dispositivo para atualizações de driver. Para obter uma lista de drivers que encontraram problemas, consulte a seção "outros fornecedores" no seguinte artigo da Base de dados de Conhecimento da Microsoft:
    2121098 (http://support.microsoft.com/default.aspx?scid=kb;en-US;2121098) Recomendado atualizações do sistema operacional e os drivers para instalações de SQL Server
  3. Se você ainda encontrar esses problemas depois de aplicar esses hotfixes, aplica um hotfix do Windows limita o número de operações de apara por processo. Para obter mais informações, clique nos números abaixo para ler os artigos na Base de dados de Conhecimento da Microsoft:
    938486  (http://support.microsoft.com/kb/938486/ ) Um computador baseado no Windows Server 2003 não responde por causa de uma operação de remoção de Gerenciador de memória é causada por um módulo de indeterminado solicita muita memória
    956341  (http://support.microsoft.com/kb/956341/ ) Um computador baseado no Windows Server 2003 pára de responder devido uma solicitação de alocação de memória grande
    Quando um driver de dispositivo tenta alocar memória, o sistema operacional Windows talvez página fora do conjunto de trabalho de outros aplicativos. Esse hotfix do Windows permite que você usar o rastreamento de eventos para localizar o driver de dispositivo que faz com que o problema. Para obter mais informações sobre o driver específico que faz com que o comportamento de remoção de conjunto de trabalho, consulte o artigo do MSDN"Identificando Drivers alocar memória contígua (http://msdn.microsoft.com/en-us/library/ff190924(VS.85).aspx) ."
  4. Aplicativos podem usar o cache do sistema muito e podem causar um grande crescimento de cache do sistema. Para responder ao crescimento do cache do sistema, as páginas de sistema fora do conjunto de trabalho do processo de SQL Server ou de outros aplicativos. Se você enfrentar esse problema, você pode usar algumas funções de gerenciamento de memória do aplicativo. Essas funções controlam o espaço de cache do sistema que podem ser usar operações de e/S de arquivo no aplicativo. Por exemplo, você pode usar o SetSystemFileCacheSize função e o GetSystemFileCacheSize função para controlar o espaço de cache do sistema podem usar a operações de e/S de arquivo.

    Você pode usar o objeto de desempenho de memória para exibir os valores dos contadores de vários nesse objeto para determinar se o cache do sistema de conjunto de trabalho usa muita memória. Por exemplo, você pode exibir os contadores de Bytes de Cache e sistema residentes de Cache. Para obter mais informações sobre esse tópico, visite os seguintes sites:
    http://blogs.msdn.com/ntdebugging/archive/2007/11/27/Too-much-cache.aspx (http://blogs.msdn.com/ntdebugging/archive/2007/11/27/too-much-cache.aspx)

    http://blogs.msdn.com/ntdebugging/Archive/2009/02/06/Microsoft-Windows-Dynamic-Cache-Service.aspx (http://blogs.msdn.com/ntdebugging/archive/2009/02/06/microsoft-windows-dynamic-cache-service.aspx)

    http://support.microsoft.com/default.aspx?scid=KB;EN-US; 976618 (http://support.microsoft.com/default.aspx?scid=kb;EN-US;976618)
    Você pode baixar e implantar o "Microsoft Windows Dynamic Cache Service" para controlar a memória consumida pelo cache do sistema.
  5. Se SQL Server estiver sendo executado em conjunto com o SAP R/3, você pode enfrentar um problema de paginação. Para obter mais informações, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
    931308  (http://support.microsoft.com/kb/931308/ ) Você pode enfrentar o aumento de paginação no disco rígido quando você executa um programa do SAP R/3 em um computador baseado no Windows Server 2003
  6. Se você estiver executando o SQL Server no Windows Server 2008, você deve aplicar correções para problemas conhecidos que podem levar ao trabalho de remoção do conjunto ou consumo excessivo de memória desnecessários por outros componentes do sistema operacional. Para obter mais informações, clique nos números abaixo para ler os artigos na Base de dados de Conhecimento da Microsoft:

    971442  (http://support.microsoft.com/kb/971442/ ) O desempenho do sistema do servidor gravemente fica reduzido ao tentar copiar arquivos de um servidor que esteja executando o Windows Vista ou Windows Server 2008 através de uma rede

    974609  (http://support.microsoft.com/kb/974609/ ) Um computador que esteja executando o Windows Server 2008 aleatoriamente pára de responder quando você executa um aplicativo grande

    971714  (http://support.microsoft.com/kb/971714/ ) O processo de geração de relatório pode parar de responder quando você executar o PerfMon. exe com o modelo do Active Directory Diagnostics para gerar um relatório em um controlador de domínio baseado no Windows Server 2008
  7. Se você estiver executando o SQL Server no Windows servir 2008 R2, você deve aplicar correções para problemas conhecidos que podem levar à remoção do conjunto de trabalho. Para obter mais informações, clique nos números abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
    979149  (http://support.microsoft.com/kb/979149/ ) Um computador que esteja executando o Windows 7 ou Windows Server 2008 R2 deixa de responder quando você executa um aplicativo grande

    2155311  (http://support.microsoft.com/kb/2155311/ ) Desempenho ruim ocorre em um computador que possui processadores baseados NUMA e que está executando o Windows Server 2008 R2 ou o Windows 7 se um solicitações thread muita memória que está dentro dos primeiros 4 GB de memória

    2468345  (http://support.microsoft.com/kb/2468345/ ) Computador executa mal intermitentemente ou pára de responder quando o driver Storport é usado no Windows Server 2008 R2

Como determinar a memória usada por edições de 64 bits do SQL Server

Você pode usar o Monitor de desempenho para exibir a página de memória é usado por edições de 64 bits do SQL Server. Para fazer isso, monitorar o desempenho a seguir contador:
O objeto de desempenho: memória
Contador: Páginas/S
Para obter mais informações sobre como usar esse contador para determinar a memória, clique no número abaixo para ler o artigo no Base de dados de Conhecimento da Microsoft:
889654  (http://support.microsoft.com/kb/889654/ ) Como determinar o tamanho do arquivo de página apropriada para as versões de 64 bits do Windows Server 2003 ou Windows XP
Além disso, você pode medir o efeito de paginação em edições de 64 bits do SQL Server, monitorando o seguinte contadores de desempenho:
O objeto de desempenho: processo
Contador: Private Bytes
Instância: sqlservr

O objeto de desempenho: processo
Contador: Conjunto de trabalho
Instância: sqlservr
O contador Private Bytes mede a memória que está atualmente comprometida. O contador de conjunto de trabalho mede a memória física que está atualmente ocupada pelo processo. edições de 64 bits do SQL Server também usam o contador de desempenho a seguir para expor a memória que aloca do pool de buffer:
O objeto de desempenho: o Gerenciador de memória de: SQL Server
Contador: Total Server (KB)
Observação Se a instância do que a edição de 64 bits do SQL Server é uma instância nomeada, o nome do objeto de desempenho é o seguinte:
MSSQL$InstanceName: Gerenciador de memória de
Se o valor do contador de conjunto de trabalho for menor que o valor do contador Total (KB) de servidor, pelo menos parte da memória que é uma parte do pool de buffer foi cortada do o SQL Server conjunto de trabalho.

Após atribuir a Bloquear páginas na memória direito de usuário e você reinicia o serviço de SQL Server, o pool de buffer do processo de SQL Server ainda responde a eventos de notificação de recursos de memória e dinamicamente aumenta ou diminui em resposta a esses eventos. No entanto, você não conseguir ver as alocações de memória para o pool de buffer que estejam bloqueadas na memória em que os contadores de desempenho a seguir:
  • O contador Private Bytes e o contador do conjunto de trabalho no Monitor de desempenho
  • O Uso de memória coluna a Processos guia Gerenciador de tarefas
Depois que essas páginas são bloqueadas, esses contadores de desempenho representam as alocações de memória dentro do processo de SQL Server, quando essas alocações não usam o pool de buffer. O contador Total (KB) de servidor do objeto de desempenho do Gerenciador do SQL Server: memória representa com precisão a memória alocada para o pool de buffer.

Considerações importantes antes de atribuir o usuário "Bloquear páginas na memória" ideal para uma instância de uma edição de 64 bits do SQL Server

Você deve fazer considerações adicionais antes de atribuir o Bloquear páginas na memória direito de usuário. Se você atribuir esse direito de usuário no sistemas que estão configurados incorretamente, o sistema pode ficar instável ou enfrentar uma diminuição de desempenho de todo o sistema. Além disso, o evento ID 333 pode ser registrado no log de eventos.

Se você contatar o serviço de suporte de cliente da Microsoft (CSS) para esses problemas, os engenheiros CSS podem solicitar que você revogar esse direito de usuário da conta de usuário que é usado como a conta de inicialização do serviço de SQL Server. Esta etapa pode ser necessária coletar dados de desempenho importante que os engenheiros CSS podem usar para a configuração necessária das várias opções para SQL Server e outros aplicativos que são executados no sistema. Depois que os engenheiros CSS coletam os dados de desempenho, você pode atribuir a Bloquear páginas na memória direito de usuário a conta de inicialização do serviço de SQL Server.

Antes de atribuir o Bloquear páginas na memória direito de usuário, certifique-se de que você capture um log de desempenho do sistema para determinar os requisitos de memória de vários aplicativos e serviços que estão instalados no sistema. Esses aplicativos também incluem o SQL Server. Para determinar os requisitos de memória, colete as seguintes informações de linha de base:
  • Certifique-se de que você defina o memória máxima do servidor opção e o memória mínima do servidor a opção corretamente. Essas opções refletem apenas o requisito de memória de pool de buffer do processo de SQL Server. Essas opções não incluem a memória alocada para outros componentes dentro do processo de SQL Server. Esses componentes incluem o seguinte:
    • Os threads de trabalho do SQL Server
    • O alocador de várias páginas do Gerenciador de memória do SQL Server
    • Diversas DLLs e os componentes que o processo de SQL Server é carregado dentro do espaço de endereço do processo de SQL Server
    • As operações de backup e restauração
  • As DLLs e os componentes incluem vários provedores OLE DB, procedimentos armazenados estendidos, a Microsoft COM objetos que são usados para o sp_OACreate procedimento armazenado, servidores vinculados e CLR do SQL Server. Memória alocada para esses componentes se encontra sob a região de pool do nonbuffer do espaço de endereço do processo de SQL Server. Idealmente, determinar a quantidade máxima de memória que todo o processo de SQL Server pode usar, você deve subtrair a memória alocada para os componentes que não usam o pool de buffer da memória total que você deseja que o processo de SQL Server para usar. Em seguida, você pode usar o valor restante para definir o memória máxima do servidor opção. Antes de definir o memória máxima do servidor opção e o memória mínima do servidor como opção, você deve examinar cuidadosamente o tópico "Configurando as opções de memória manualmente" nos Manuais Online do SQL Server.
  • Determine o requisito de memória de outros aplicativos e componentes do sistema operacional Windows. Os aplicativos podem incluir outros SQL Server componentes, por exemplo, agente de SQL Server, agentes de replicação de SQL Server, SQL Server Reporting Services, SQL Server Analysis Services, serviços de integração de SQL Server e pesquisa de texto completo do SQL Server. Aplicativos que executam operações de backup e operações de cópia de arquivo podem usar muita memória. Considere a possibilidade de operações como, por exemplo, o agente de instantâneo e cópia em massa que geram e/S de arquivo. Você deve considerar o requisito de memória de todos esses aplicativos, ao determinar o valor da memória máxima do servidor opção e o memória mínima do servidor opção. Você pode usar o contador Private Bytes e o contador do conjunto de trabalho sob o objeto de processo para cada processo para determinar o requisito de memória para um processo específico.
  • Por padrão, o Bloquear páginas na memória direito de usuário já foi atribuído à conta interna do sistema Local. Para obter mais informações, visite o seguinte site da Microsoft:
    http://blogs.msdn.com/psssql/archive/2007/10/18/do-i-have-to-Assign-the-Lock-Privilege-for-local-System.aspx (http://blogs.msdn.com/psssql/archive/2007/10/18/do-i-have-to-assign-the-lock-privilege-for-local-system.aspx)
  • Se você usar uma conta de usuário do Windows globalmente para todos os processos de SQL Server em um domínio, determine os direitos de usuário são atribuídos usando uma configuração de diretiva de grupo. Um processo de SQL Server de 32 bits pode usar essa conta como a conta de inicialização. No entanto, essa conta requer o Bloquear páginas na memória direito de usuário para ativar o recurso de extensões AWE (Address Windowing). Para obter mais informações, consulte o tópico "Fornecendo a quantidade máxima de memória para SQL Server" nos Manuais Online do SQL Server.
  • Antes de configurar o memória máxima do servidor opção e o memória mínima do servidor opção para várias instâncias de SQL Server, considere os requisitos de memória de pool de nonbuffer para cada instância de SQL Server. Em seguida, configure estas opções para cada instância de SQL Server.
Idealmente, você pode coletar essas informações de linha de base durante picos de carga. Portanto, você pode determinar os requisitos de memória para vários aplicativos e componentes suportar a carga de pico. Os requisitos de memória variam de um sistema para outro sistema, de acordo com as atividades e os aplicativos que são executados no sistema.

Como usar as informações de buffers em anel SQL Server para determinar as condições de memória quando ocorre a paginação

Você pode usar as informações de buffers em anel SQL Server para determinar as condições de memória no servidor quando ocorre a paginação. Você pode usar um script como, por exemplo, o script a seguir para obter essas informações.
SELECT CONVERT (varchar(30), GETDATE(), 121) as runtime,
DATEADD (ms, -1 * (sys.ms_ticks - a.[Record Time]), GETDATE()) AS Notification_time,  
 a.* , sys.ms_ticks AS [Current Time]
 FROM 
 (SELECT x.value('(//Record/ResourceMonitor/Notification)[1]', 'varchar(30)') AS [Notification_type], 
 x.value('(//Record/MemoryRecord/MemoryUtilization)[1]', 'bigint') AS [MemoryUtilization %], 
 x.value('(//Record/MemoryRecord/TotalPhysicalMemory)[1]', 'bigint') AS [TotalPhysicalMemory_KB], 
 x.value('(//Record/MemoryRecord/AvailablePhysicalMemory)[1]', 'bigint') AS [AvailablePhysicalMemory_KB], 
 x.value('(//Record/MemoryRecord/TotalPageFile)[1]', 'bigint') AS [TotalPageFile_KB], 
 x.value('(//Record/MemoryRecord/AvailablePageFile)[1]', 'bigint') AS [AvailablePageFile_KB], 
 x.value('(//Record/MemoryRecord/TotalVirtualAddressSpace)[1]', 'bigint') AS [TotalVirtualAddressSpace_KB], 
 x.value('(//Record/MemoryRecord/AvailableVirtualAddressSpace)[1]', 'bigint') AS [AvailableVirtualAddressSpace_KB], 
 x.value('(//Record/MemoryNode/@id)[1]', 'bigint') AS [Node Id], 
 x.value('(//Record/MemoryNode/ReservedMemory)[1]', 'bigint') AS [SQL_ReservedMemory_KB], 
 x.value('(//Record/MemoryNode/CommittedMemory)[1]', 'bigint') AS [SQL_CommittedMemory_KB], 
 x.value('(//Record/@id)[1]', 'bigint') AS [Record Id], 
 x.value('(//Record/@type)[1]', 'varchar(30)') AS [Type], 
 x.value('(//Record/ResourceMonitor/Indicators)[1]', 'bigint') AS [Indicators], 
 x.value('(//Record/@time)[1]', 'bigint') AS [Record Time]
 FROM (SELECT CAST (record as xml) FROM sys.dm_os_ring_buffers 
 WHERE ring_buffer_type = 'RING_BUFFER_RESOURCE_MONITOR') AS R(x)) a 
CROSS JOIN sys.dm_os_sys_info sys
ORDER BY a.[Record Time] ASC

Observação Esta consulta é válida para o SQL Server 2005 e SQL Server de 2008.

Você pode consultar as informações fornecidas na sys.dm_os_process_memory de modo dinâmico de gerenciamento para entender se o sistema está encontrando condições de pouca memória. Para obter mais informações, consulte a referência SQL Server 2008 Books Online no seguinte site da MSDN:
http://msdn.microsoft.com/en-us/library/bb510747.aspx (http://msdn.microsoft.com/en-us/library/bb510747.aspx)

Informações de SQL Server 2008 R2 BPA

O SQL Server 2008 R2 Best Practice Analyzer (SQL Server 2008 R2 BPA) fornece várias regras para detectar situações que podem resultar na remoção do conjunto do processo de SQL Server de trabalho. O BPA do SQL Server 2008 R2 oferece suporte a SQL Server de 2008 e SQL Server 2008 R2.

Se você executa a ferramenta BPA e recebe o aviso, o "Mecanismo de banco de dados - memória de SQL Server configurações estiverem incorretas," você precisa verificar a configuração de memória máxima do servidor para esta instância do SQL Server e siga as recomendações na seção de "Considerações importantes antes de atribuir o 'Bloquear páginas na memória' direito de usuário para uma instância de uma edição de 64 bits do SQL Server" deste artigo.

Se você executa a ferramenta BPA e o erro ocorrer, "o mecanismo de banco de dados - operacional, drivers e arquivos de sistema precisa de atualização para o aparamento de conjunto de trabalho" é necessário analisar todas as correções discutidas na seção "Resolução" deste artigo e aplicá-las.

Se você executa a ferramenta BPA e enfrentar o erro "Mecanismo de banco de dados - parte significativa do SQL Server, memória sofreu page out," você precisa revisar as seções "Resolução" e "Solução alternativa" deste artigo e tomar a ação apropriada.

Referências

Recolher esta tabelaExpandir esta tabela
Software de regraTítulo da regraIdentificador de regra
Regra BPA SQL Server 2008 R2As configurações de memória do SQL Server estão incorretasRID3804
Regra BPA SQL Server 2008 R2 Drivers e arquivos de sistema operacional precisa de atualização para o aparamento de conjunto de trabalho RID0059
Regra BPA SQL Server 2008 R2Uma parte significativa de memória de SQL Server sofreu page outRID0049

Aprimoramentos no Windows Server 2008 e no Windows Server 2008 R2


Windows Server 2008 e Windows Server 2008 R2 melhoram o mecanismo de alocação de memória contígua. Essa melhoria permite que o Windows Server 2008 e Windows Server 2008 R2 reduzir, até certo ponto, os efeitos de paginação para fora do conjunto de trabalho de aplicativos, quando chegarem a novas solicitações de memória.

Veja a seguir uma explicação dos aprimoramentos em relação o Microsoft white paper "Avança na memória gerenciamento no Windows":

No Windows Server 2008, a alocação de memória fisicamente contígua é aumentada. Solicitações para alocar a memória contígua são muito mais provável que teve êxito porque o Gerenciador de memória agora substitui dinamicamente páginas, geralmente sem aparar o conjunto de trabalho ou a realização de operações de e/S. Além disso, muitos mais tipos de páginas ? como, por exemplo, as pilhas do kernel e páginas de metadados do sistema de arquivos, entre outros ? agora são candidatos para substituição. Conseqüentemente, mais memória contígua estará disponível a qualquer momento. Além disso, o custo para obter tais alocações é bastante reduzido.
Para exibir o white paper "Avança na memória gerenciamento no Windows", visite o seguinte site da Microsoft:
http://download.microsoft.com/download/9/c/5/9c5b2167-8017-4bae-9fde-d599bac8184a/MemMgt.docx (http://download.microsoft.com/download/9/c/5/9c5b2167-8017-4bae-9fde-d599bac8184a/MemMgt.docx)
Para obter mais informações, visite os seguintes sites da Microsoft:
http://blogs.msdn.com/psssql/archive/2008/03/03/SQL-Server-Working-Set-Trim-Problems-Consider.aspx (http://blogs.msdn.com/psssql/archive/2008/03/03/sql-server-working-set-trim-problems-consider.aspx)
http://support.microsoft.com/KB/2001745 (http://support.microsoft.com/kb/2001745)
Observação Em um computador baseado no Windows Server 2008, você deve instalar o SQL Server Service Pack 2 (SP2) ou um service pack mais recente para o SQL Server.

Os produtos de terceiros mencionados neste artigo são fabricados por empresas independem da Microsoft. Microsoft não oferece nenhuma garantia, implícita ou não, sobre o desempenho ou confiabilidade desses produtos.

A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 2005 Standard X64 Edition
  • Microsoft SQL Server 2005 Standard Edition for Itanium Based Systems
  • Microsoft SQL Server 2005 Enterprise X64 Edition
  • Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems
  • Microsoft SQL Server 2008 Standard
  • Microsoft SQL Server 2008 Enterprise
Palavras-chave: 
kbsqlsetup kbsql2005engine kbexpertiseadvanced kbinfo kbmt KB918483 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 918483  (http://support.microsoft.com/kb/918483/en-us/ )