INF: Usando DBCC MEMORYSTATUS para monitorar o uso de memória do SQL Server

Traduções deste artigo Traduções deste artigo
ID do artigo: 271624 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Neste artigo

Sumário

O comando DBCC MEMORYSTATUS apresenta um instantâneo do status de memória atual do SQL Server. A saída desse comando é útil para solucionar problemas relacionados para o consumo de memória do SQL Server ou para erros de falta de memória específicos (muitos dos quais imprimir essa saída no log de erros automaticamente). Suporte técnico da Microsoft também podem solicitar que você execute este comando durante o curso de um incidente de suporte específico se se deparar com um erro que pode ser associado a uma condição de pouca memória.

Este comando se destina a ser uma ferramenta de diagnóstico para suporte técnico. O formato da saída e o nível de detalhe é fornecido estão sujeitas a alteração entre versões de pacote e produto de serviço. A funcionalidade fornecida pelo comando DBCC MEMORYSTATUS provavelmente será substituída por um mecanismo diferente em futuras versões do produto e este comando podem não funcionar mais. Nenhum aviso adicional será feito antes de alterar ou remover esse comando. Portanto, podem danificar aplicativos que dependem de seu comportamento sem aviso.

A saída do DBCC MEMORYSTATUS contém sete seções. Este artigo descreve alguns dos principais dados que podem ser obtidas da saída no primeiro quatro seções. As seções restantes envolvem detalhes de implementação proprietários e eles não são explicados neste artigo. Atendimento Microsoft não responder a perguntas ou fornecer informações adicionais sobre o significado de contadores específicos além fornecido neste artigo.

Mais Informações

Primeira seção

A primeira seção descreve a distribuição de buffers de 8 KB no pool de buffer. Há uma estrutura de buffer para cada página de 8 KB potencial no pool de buffer. Isso inclui páginas físicas se extensões de janela de endereço (AWE) está ativado. Essa estrutura contém um número de bits que indicam o status da página subjacente (ou seja, se a página foi modificada, é fixado, está na E/S e mais). Esta seção detalha o número de buffers que possui bits de status específicos.
Buffer Distribution              Buffers     
------------------------------   ----------- 
Stolen                           241
Free                             95
Procedures                       89
Inram                            0
Dirty                            16
Kept                             0
I/O                              0
Latched                          18
Other                            880

(9 row(s) affected)
				
Stolen. memória Stolen descreve buffers estão em uso para classificar ou para o hash operações (memória de espaço de trabalho de consulta) ou para os buffers que estão sendo usados como um armazenamento de memória genérico para alocações para armazenar estruturas de dados internos, como bloqueios, contexto de transação e informações de conexão. O processo lazywriter não é permitido para liberar Stolen buffers fora do pool de buffer.

livre . livre refere-se a confirmada buffers que não estão em uso no momento. Eles estão disponíveis para armazenar dados, ou pode ser solicitados por outros componentes e marcados como Stolen .

procedimentos . procedimentos refere-se para buffers que estiverem mantendo o procedimento armazenado em cache de memória. Esses buffers contenham compilados e executáveis planos para procedimentos e planos de ad hoc em cache.

Inram . Inram se referem a páginas para fixados tabelas que não podem ser removidas da memória (fixada utilizando o comando DBCC PINTABLE ou o procedimento sp_tableoption armazenados).

sujo . Dirty refere-se a páginas de dados que contêm alterações que ainda não tiverem sido liberadas para o disco.

mantidos . kept se referem a páginas temporariamente são fixadas na memória para impedir que sejam liberados. Esse valor não é usado no SQL Server 2000.

I/O. E/s refere-se para buffers que estão aguardando em uma operação de E/s pendente. No SQL Server 2000, isso inclui mapeamento ou unmapping um buffer por meio de AWE.

travadas . Os buffers latched registre o número de buffers onde uma conexão é de leitura ou está modificando uma linha da página. Um registrador de divisão é usado para garantir a consistência física dos dados na página durante a leitura ou modificado, enquanto um bloqueio é usado para garantir a consistência transacional e lógica.

outros . Esses são confirmadas páginas que não atendem a qualquer um dos critérios mencionados anteriormente. Normalmente, a maioria dos buffers que atendem esse critério são dados hash e páginas de índice no cache de buffer.

Segunda seção

A segunda seção lista alguns totais que refletem o tamanho geral e a composição do pool de buffer.
Buffer Counts                  Buffers     
------------------------------ ----------- 
Committed                      1339
Target                         6318
Hashed                         914
InternalReservation            120
ExternalReservation            0
Min Free                       16

(6 row(s) affected)
				
confirmada. O número total de buffers são confirmadas no Windows NT. O valor confirmado é o atual "tamanho" do pool de buffer. Esse valor inclui a memória física que é alocada se habilitadas para AWE.

destino . O destino confirmada contagem ou como grande pool de buffer gostaria de. Se a contagem de destino for maior que o valor confirmado , o pool de buffer está crescendo. Se a contagem de destino for menor que o valor confirmado , está reduzindo o pool de buffer. O processo de lazywriter usa esse valor para determinar se a aumentar ou reduzir o pool de buffer.

hash . O número de páginas de índice e dados que são armazenadas no pool de buffer.

InternalReservation . O número de páginas que mantém o pool de buffer para si mesma. O valor InternalReservation é o número mínimo de páginas que são necessárias para satisfazer as demandas de dados simples para o número atual de usuários.

ExternalReservation . O número de páginas que foram reservados para consultas que executará uma operação de hash ou uma classificação mas que têm não ainda sido roubado. Isso é usado como uma dica para o lazywriter que haverá um requisito de futuro para uma grande quantidade de memória.

min livre . O número de páginas que o pool de buffer tenta manter na lista livre. Se a lista livre ficar abaixo do valor Mínimo livre , pool de buffer tenta para preencher a lista livre ao descartar páginas antigas do cache de dados ou procedimentos antigos do cache de procedimento.

Terceira seção

A terceira seção descreve a composição do cache de procedimento.
Procedure Cache                Value       
------------------------------ ----------- 
TotalProcs                     17
TotalPages                     89
InUsePages                     40

(3 row(s) affected)
				
TotalProcs . O número total de objetos em cache atualmente no cache de procedimento. Esse valor corresponderá o número de entradas na tabela virtual syscacheobjects . Você pode usar o Monitor de desempenho para monitorar o objeto do SQL Server: Cache Gerenciador para uma divisão detalhada do tipo de objetos em cache--para exemplo, disparadores, procedimentos e ad hoc.

TotalPages . O número cumulativo de páginas que você deve ter para armazenar todos os objetos em cache.

InUsePages . O número de páginas no cache de procedimento que pertencem aos procedimentos que estão em execução no momento. Esses não podem ser descartados.

Quarta seção

A quarta seção descreve a distribuição relativa de buffers roubados entre grupos de componentes principais no servidor. SQL Server implementa seus próprio gerenciadores de memória que usam páginas de pool de buffer para pequenas alocações e que retorno para rotinas de sistema operacional somente para alocações que são maiores do que aproximadamente 8 KB. Essas alocações maiores são fora do pool de buffer, e eles são normalmente chamados de alocações da área de MemToLeave . O tamanho dessa área pode ser controlado pelo usando o -g opção de linha de comando.

Normalmente, a maioria das alocações de memória de MemToLeave são dos consumidores de memória não-SQL Server que estão em execução em processo, como objetos COM, procedimentos armazenados estendidos e servidores vinculados. Os valores relacionados ao sistema operacional que são relatados no DBCC MEMORYSTATUS refletem somente alocações de MemToLeave que são feitas diretamente pelo SQL Server. Outras alocações que ocorrem no MemToLeave desses outros componentes não estão incluídas porque o SQL Server não tem conhecimento dessas solicitações de memória.
Dynamic Memory Manager         Buffers     
------------------------------ ----------- 
Stolen                         330
OS Reserved                    152
OS Committed                   138
OS In Use                      129
General                        322
QueryPlan                      87
Optimizer                      0
Utilities                      10
Connection                     40

(9 row(s) affected)
				
roubado . Número total de buffers são roubados de pool de buffer pelos gerenciadores de cinco memória (General, plano de consulta, otimizador, utilitários, conexão). Essas páginas são usadas para serviço alocações de memória que forem menores do que 8 KB.

OS reservados . O número de páginas que são reservados do sistema operacional para manipular solicitações de alocação são maiores do que aproximadamente 8 KB.

confirmação do sistema operacional . A quantidade de memória em regiões reservadas que tenha sido confirmada. O valor de Confirmação do sistema operacional deve ser menor ou igual ao valor Reservados do sistema operacional porque buffers são reservados primeiro e confirmadas em seguida. Algumas da memória podem ser liberadas quando não é usado.

Observação Há um bug no SQL Server 2000 (que é corrigido no SQL Server 2000 Service Pack 3) que faz com que esse valor a não ser mantido com precisão e, portanto, pode vir fora do intervalo válido.

sistema operacional em uso . Os buffers de Confirmação do sistema operacional que estão fazendo no momento as alocações de memória pendentes.

Geral . Memória que é usada por consumidores de memória geral em servidor, incluindo análise ou normalização, bloqueios, contexto de transação, estruturas de dados interno que descreve os metadados na memória para tabelas, índices e outros. Esse valor é o número total de buffers de 8 KB. Alguns deles podem ser roubados buffers do pool de buffers e outras pessoas podem ser de MemToLeave .

QueryPlan . Memória usada para armazenar planos de consulta, transiently ou no cache. Esse valor é o número total de buffers de 8 KB. Alguns deles podem ser roubados buffers do pool de buffers e outras pessoas podem ser de MemToLeave .

otimizador . Memória que está sendo usado pelo otimizador de consulta. Esse valor é o número total de buffers de 8 KB. Alguns deles podem ser roubados buffers do pool de buffers e outras pessoas podem ser de MemToLeave .

utilitários . Memória em uso por vários rotinas de utilitários como BCP, Gerenciador de logs, consultas paralelas, :: fn_trace_gettable e outros. Esse valor é o número total de buffers de 8 KB. Alguns deles podem ser roubados buffers do pool de buffers e outras pessoas podem ser de MemToLeave .

conexão . Memória que é usada para armazenar as estruturas de dados mantendo o contexto de conexão para cada conexão do usuário. Isso também inclui a memória para o envio de rede e receber buffers estão associados com uma conexão. Esse valor é o número total de buffers de 8 KB. Algumas dessas podem ser roubados buffers do pool de buffer e outras pessoas que podem ser de MemToLeave .

Referências

Manuais online do SQL Server
Delaney, Kalen. Interno Microsoft SQL Server 2000, Microsoft Press, 2000.

Propriedades

ID do artigo: 271624 - Última revisão: quarta-feira, 12 de novembro de 2003 - Revisão: 4.3
A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
Palavras-chave: 
kbmt kbinfo KB271624 KbMtpt
Traduçã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: 271624

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com