Como usar o comando DBCC MEMORYSTATUS para monitorar o uso da memória no SQL Server 2005

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

Neste artigo

Sumário

Este artigo descreve a saída do comando DBCC MEMORYSTATUS. Este comando é freqüentemente usado para solucionar problemas de consumo de memória do Microsoft SQL Server.

Este artigo descreve os elementos da saída para o Gerenciador de memória, para o resumo do uso de memória, as informações agregadas memória, as informações de distribuição de buffer, as informações de pool de buffer e para as informações de cache de procedimento. Ela também descreve a saída sobre objetos de memória global, sobre objetos de memória de consulta, sobre otimização e sobre os agentes de memória.

INTRODUÇÃO

O comando DBCC MEMORYSTATUS apresenta um instantâneo do status de memória atual do Microsoft SQL Server. Você pode usar a saída desse comando para solucionar problemas de consumo de memória no SQL Server ou para solucionar erros de falta de memória específicos. (Muitos erros de falta de memória imprimir automaticamente essa saída no log de erro.) Serviço de suporte a clientes da Microsoft também podem solicitar que você execute este comando durante um incidente de suporte específico se houver um erro que pode ser associado a uma condição de memória baixa.

Observação Desempenho do sistema (PerfMon) e Gerenciador de tarefas não conta para memória corretamente se o suporte AWE (Address Windowing Extentions) estiver habilitado.

Este artigo descreve alguns dos dados que você pode obter da saída do comando DBCC MEMORYSTATUS. Várias seções deste artigo incluem detalhes de implementação proprietário que não são explicados aqui. Serviços de atendimento ao cliente da Microsoft não irá responder a perguntas ou fornecem mais informações sobre o significado de contadores específicos, além de informações fornecidas neste artigo.

Mais Informações

importante O comando DBCC MEMORYSTATUS é pretende ser uma ferramenta de diagnóstico para serviços de atendimento ao cliente da Microsoft. O formato da saída e o nível de detalhe é fornecido estão sujeitos a alterações entre versões do produto e service packs. A funcionalidade que o comando DBCC MEMORYSTATUS fornece pode ser substituída por um mecanismo diferente em versões posteriores do produto. Portanto, em versões posteriores do produto, este comando pode funcionar mais. Nenhum aviso adicional será feito antes que este comando é alterado ou removido. Portanto, aplicativos que usam esse comando podem quebrar sem aviso.

A saída do comando DBCC MEMORYSTATUS foi alterado de versões anteriores do SQL Server. O resultado contém agora várias seções que não estavam em versões anteriores do produto disponíveis.

Gerenciador de memória

A primeira seção da saída é o Gerenciador de memória. Esta seção mostra geral consumo de memória pelo SQL Server.
   Memory Manager                 KB 
   ------------------------------ --------------------
   VM Reserved                    1761400
   VM Committed                   1663556
   AWE Allocated                  0
   Reserved Memory                1024
   Reserved Memory In Use         0

   (5 row(s) affected)
Os elementos nesta seção são o seguinte:
  • Reservado de VM : este valor mostra a quantidade total de espaço de endereço virtual (VAS) que reservou o SQL Server.
  • Confirmação de VM : este valor mostra a quantidade geral de VAS SQL Server foi confirmada. VAS tem o compromisso foi associada a memória física.
  • AWE alocados : este valor mostra a quantidade total de memória é alocada pelo mecanismo de AWE na versão de 32 bits do SQL Server. Ou, este valor mostra a quantidade total de memória que páginas bloqueadas consumir na versão 64 bits do produto.
  • Memória reservada : este valor mostra a memória é reservada para a conexão de administrador dedicada (DAC).
  • Memória reservada em uso : este valor mostra a memória reservada que está sendo usada.

Resumo do uso de memória

A seção do Gerenciador de memória é seguida de um resumo do uso da memória para cada nó de memória. Um sistema de acesso (NUMA) habilitado de memória não-uniforme, haverá uma entrada de nó de memória correspondente para cada nó de hardware. Em um sistema SMP, haverá uma entrada de nó única memória.

Observação O nó de memória identificação pode não corresponder ao hardware nó ID.
   Memory node Id = 0             KB 
   ------------------------------ --------------------
   VM Reserved                    1757304
   VM Committed                   1659612
   AWE Allocated                  0
   MultiPage Allocator            10760
   SinglePage Allocator           73832

   (5 row(s) affected)
Observação esses valores mostram a memória é alocada por threads que estão em execução neste nó NUMA. Esses valores não são a memória local para o nó NUMA.

Os elementos nesta seção são o seguinte:
  • Reservado de VM : este valor mostra a VAS que está reservada por threads em execução neste nó.
  • Confirmação de VM : este valor mostra a VAS que é confirmada por threads em execução neste nó.
  • AWE alocados : este valor mostra a memória é alocada pelo mecanismo de AWE na versão de 32 bits do produto. Ou, este valor mostra a quantidade total de memória consumida por páginas bloqueadas na versão 64 bits do produto.

    Em um sistema NUMA habilitado, esse valor pode ser incorreta ou negativo. No entanto, o valor total AWE alocados na seção Gerenciador de memória é um valor correto. Para controlar a memória é alocada por nós NUMA individuais, use SQL Server: nó de buffer objetos de desempenho. (Para obter mais informações, consulte Os manuais online do SQL Server .)
  • Alocador multiPage : este valor mostra a memória é alocada por meio de alocador multipage por threads em execução neste nó. Essa memória proveniente de fora do pool de buffer.
  • Alocador SinglePage : este valor mostra a memória é alocada por meio do alocador de página única por threads em execução neste nó. Essa memória é roubada do pool de buffers.
Observação As somas de valores VM reservados e os valores VM confirmada em todos os nós de memória será um pouco menor do que os valores correspondentes que são relatados na seção Gerenciador de memória.

Memória agregada

A próxima seção contém informações agregadas memória para cada tipo de auxiliar e para cada nó NUMA. Para um sistema NUMA habilitados, você poderá ver saída similar à seguinte.

Observação A tabela a seguir contém somente uma parte da saída.
   MEMORYCLERK_SQLGENERAL (node 0)                                  KB 
   ---------------------------------------------------------------- --------------------
   VM Reserved                                                      0
   VM Committed                                                     0
   AWE Allocated                                                    0
   SM Reserved                                                      0
   SM Commited                                                      0
   SinglePage Allocator                                             592
   MultiPage Allocator                                              2160

   (7 row(s) affected)

   MEMORYCLERK_SQLGENERAL (node 1)                                  KB 
   ---------------------------------------------------------------- --------------------
   VM Reserved                                                      0
   VM Committed                                                     0
   AWE Allocated                                                    0
   SM Reserved                                                      0
   SM Commited                                                      0
   SinglePage Allocator                                             136
   MultiPage Allocator                                              0

   (7 row(s) affected)

   MEMORYCLERK_SQLGENERAL (Total)                                   KB 
   ---------------------------------------------------------------- --------------------
   VM Reserved                                                      0
   VM Committed                                                     0
   AWE Allocated                                                    0
   SM Reserved                                                      0
   SM Commited                                                      0
   SinglePage Allocator                                             728
   MultiPage Allocator                                              2160

   (7 row(s) affected)
Observação Essas identificações de nó correspondem da configuração de nó do computador que está executando o SQL Server. O nó identificações incluem software possíveis em nós que são definidas na parte superior de hardware em nós ou na parte superior de um sistema SMP. Para localizar o mapeamento entre CPUs e identificações de nó para cada nó, exiba informações sobre o número de identificação de evento 17152. Este evento é registrado no log do aplicativo em Visualizar eventos quando você iniciar o SQL Server.

Para um sistema SMP, você verá apenas uma seção para cada tipo de auxiliar. Esta seção é semelhante à seguinte.
   MEMORYCLERK_SQLGENERAL (Total)                                   KB 
   ---------------------------------------------------------------- --------------------
   VM Reserved                                                      0
   VM Committed                                                     0
   AWE Allocated                                                    0
   SM Reserved                                                      0
   SM Commited                                                      0
   SinglePage Allocator                                             768
   MultiPage Allocator                                              2160

   (7 row(s) affected)
Outras informações dessas seções são sobre memória compartilhada:
  • SM reservado : este valor mostra a VAS está reservada por todos os assistentes desse tipo que estão usando os arquivos de memória mapeada API. Essa API é também conhecido como memória compartilhada .
  • SM confirmadas : este valor mostra a VAS confirmada pelo todos os assistentes desse tipo que estão usando arquivos de memória mapeada API.
Você pode obter informações de resumo para cada tipo de auxiliar para todos os nós de memória usando a exibição de gerenciamento dinâmico de sys.dm_os_memory_clerks (DMV). Para fazer isso, execute a seguinte consulta:
select 
	type,
	sum(virtual_memory_reserved_kb) as [VM Reserved],
	sum(virtual_memory_committed_kb) as [VM Committed],
	sum(awe_allocated_kb) as [AWE Allocated],
	sum(shared_memory_reserved_kb) as [SM Reserved], 
	sum(shared_memory_committed_kb) as [SM Committed],
	sum(multi_pages_kb) as [MultiPage Allocator],
	sum(single_pages_kb) as [SinlgePage Allocator]
from 
	sys.dm_os_memory_clerks 
group by type

Distribuição de buffer

A próxima seção mostra a distribuição de 8 kilobytes (KB) buffers no pool de buffer.
   Buffer Distribution            Buffers
   ------------------------------ -----------
   Stolen                         553
   Free                           103
   Cached                         161
   Database (clean)               1353
   Database (dirty)               38
   I/O                            0
   Latched                        0

   (7 row(s) affected)
Os elementos nesta seção são o seguinte:
  • Stolen : memória Stolen descreve buffers de 8 KB que o servidor usa para diversos fins. Esses buffers servem como as alocações de armazenamento de memória genérico. Diferentes componentes do servidor usam esses buffers para armazenar estruturas de dados interno. O processo lazywriter não é permitido para liberar Stolen buffers fora do pool de buffer.
  • livre : este valor mostra confirmadas buffers que atualmente não estão sendo usados. Esses buffers estão disponíveis para armazenar dados. Ou, outros componentes poderá solicitar esses buffers e marcar esses buffers como Stolen .
  • em cache : este valor mostra os buffers são usados para vários caches.
  • banco de dados (limpo) : este valor mostra os buffers que possuem conteúdo do banco de dados e que não foram modificados.
  • banco de dados (sujo) : este valor mostra os buffers que possuem conteúdo do banco de dados e que foram modificados. Esses buffers contém alterações que precisam ser liberadas para o disco.
  • E/s : este valor mostra os buffers que estão aguardando para uma operação de E/s pendente.
  • Latched : este valor mostra os buffers travadas . Um buffer é travado quando um thread é ler ou modificar o conteúdo de uma página. Um buffer é também travado quando a página está sendo lida do disco ou gravadas no disco. Um registrador de divisão é usado para manter a consistência física dos dados na página enquanto ele está sendo lido ou modificado. Um bloqueio é usado para manter a consistência transacional e lógica.

Detalhes do pool de buffer

Você pode obter informações detalhadas sobre buffer pool de buffers para páginas do banco de dados usando sys.dm_os_buffer_descriptors DMV. E você pode obter informações detalhadas sobre páginas de pool de buffer que estão sendo usados para fins diversos do servidor usando sys.dm_os_memory_clerks DMV.

A próxima seção lista detalhes sobre o pool de buffer além de informações adicionais.
   Buffer Counts                  Buffers
   ------------------------------ --------------------
   Committed                      1064
   Target                         17551
   Hashed                         345
   Stolen Potential               121857
   External Reservation           645
   Min Free                       64
   Visible                        17551
   Available Paging File          451997

   (8 row(s) affected)
Os elementos nesta seção são o seguinte:
  • confirmado : este valor mostra o total de buffers é confirmadas . Buffers são confirmadas tem memória física associada a eles. O valor confirmado é o tamanho atual do pool de buffer. Esse valor inclui a memória física que é alocada se o suporte AWE estiver habilitado.
  • destino : este valor mostra o tamanho destino de pool de buffer. Se o valor de destino for maior que o valor confirmado , o pool de buffer está crescendo. Se o valor de destino for menor que o valor confirmado , está reduzindo o pool de buffer.
  • Hashed : este valor mostra as páginas de dados e páginas de índice são armazenadas no pool de buffer.
  • Roubado potencial : este valor mostra as máxima páginas que podem ser roubadas de pool de buffer.
  • ExternalReservation : este valor mostra as páginas que foram reservadas para consultas que irão executar uma operação de hash ou de uma operação de classificação. Essas páginas ainda não tiverem sido roubadas.
  • Min livre : este valor mostra as páginas que o pool de buffer tenta ter lista livre.
  • visível : este valor mostra os buffers visíveis ao mesmo tempo. Esses buffers podem ser acessados diretamente ao mesmo tempo. Esse valor é geralmente igual ao total de buffers. No entanto, quando o suporte AWE está habilitado, esse valor pode ser menor do que o total de buffers.
  • Arquivo de paginação disponível : este valor mostra a memória que está disponível para ser confirmada. Esse valor é expresso como o número de buffers de 8 KB. Para obter mais informações, consulte o tópico "GlobalMemoryStatusEx função" na documentação da API do Windows.

Cache de procedimento

A próxima seção descreve a composição do cache de procedimento.
   Procedure Cache                Value
   ------------------------------ -----------
   TotalProcs                     4
   TotalPages                     25
   InUsePages                     0

   (3 row(s) affected)
os elementos nesta seção são os seguintes:
  • TotalProcs : este valor mostra os objetos em cache total que estão no cache de procedimento. Esse valor corresponderá entradas da sys.dm_exec_cached_plans DMV.

    Observação Devido à natureza dinâmica das informações, a correspondência pode não ser exata. Você pode usar desempenho para monitorar o SQL Server: planejar cache objeto e o sys.dm_exec_cached_plans DMV para obter informações detalhadas sobre o tipo de objetos em cache, como disparadores, procedimentos e objetos ad hoc.
  • TotalPages : este valor mostra as páginas cumulativas que você deve ter para armazenar todos os objetos em cache no cache de procedimento.
  • InUsePages : este valor mostra as páginas no cache de procedimento que pertencem a procedimentos que estão sendo executados. Essas páginas não podem ser descartadas.

Objetos de memória global

A próxima seção contém informações sobre vários objetos de memória global. Esta seção também contém informações sobre quanto memória memória global objetos de uso.
   Global Memory Objects          Buffers
   ------------------------------ --------------------
   Resource                       126
   Locks                          85
   XDES                           10
   SETLS                          2
   SE Dataset Allocators          4
   SubpDesc Allocators            2
   SE SchemaManager               44
   SQLCache                       41
   Replication                    2
   ServerGlobal                   25
   XP Global                      2
   SortTables                     2

   (12 row(s) affected)
Os elementos nesta seção são o seguinte:
  • recurso : este valor mostra a memória que usa o objeto de recurso . O objeto Resource é usado pelo mecanismo de armazenamento e para várias estruturas de todo o servidor.
  • bloqueia : este valor mostra a memória que usa de Gerenciador de bloqueio.
  • XDES : este valor mostra a memória que usa o Gerenciador de transações.
  • SETLS : este valor mostra a memória que é usada para alocar a estrutura de por thread específicas de mecanismo de armazenamento que usa o armazenamento local de segmento.
  • SE Dataset Allocators : este valor mostra a memória que é usada para alocar estruturas para acesso à tabela através da configuração de Métodos de acesso .
  • SubpDesc Allocators : este valor mostra a memória que é usada para gerenciar subprocessos para consultas paralelas, operações de backup, as operações de restauração, operações de banco de dados, operações de arquivo, espelhamento e cursores assíncronas. Esses subprocessos são também conhecidas como processos paralelos .
  • SE SchemaManager : este valor mostra a memória que o Gerenciador de esquema usa para armazenar metadados específicas de mecanismo de armazenamento.
  • SQLCache : este valor mostra a memória que é usada para armazenar o texto de instruções ad hoc de instruções preparadas.
  • replicação : este valor mostra a memória que o servidor usa para subsistemas de replicação internos.
  • ServerGlobal : este valor mostra o objeto de memória de servidor global que é usado genericamente por vários subsistemas.
  • XP Global : este valor mostra a memória que o uso de procedimentos armazenados estendidos.
  • Tabelas de classificação : este valor mostra a memória que classificar o uso de tabelas.

Objetos de memória de consulta

A próxima seção descreve informações de concessão de memória de consulta. Esta seção inclui um instantâneo do uso de memória de consulta. Query memory is also known as workspace memory.
   Query Memory Objects           Value
   ------------------------------ -----------
   Grants                         0
   Waiting                        0
   Available (Buffers)            14820
   Maximum (Buffers)              14820
   Limit                          10880
   Next Request                   0
   Waiting For                    0
   Cost                           0
   Timeout                        0
   Wait Time                      0
   Last Target                    11520

   (11 row(s) affected)

   Small Query Memory Objects     Value       
   ------------------------------ ----------- 
   Grants                         0
   Waiting                        0
   Available (Buffers)            640
   Maximum (Buffers)              640
   Limit                          640

   (5 row(s) affected)
If the size and the cost of a query satisfy ?small? query memory thresholds, the query is put in a small query queue. Esse comportamento impede que consultas menores sendo atrasada por trás de consultas maiores que já estão na fila.

Os elementos nesta seção são o seguinte:
  • concede : este valor mostra as consultas em execução que tenham concessões de memória.
  • Aguardando : este valor mostra as consultas que estão aguardando para obter concessões de memória.
  • disponível : este valor mostra os buffers que estão disponíveis para consultas para uso como hash espaço de trabalho e como classificar o espaço de trabalho. O valor de disponível é atualizado periodicamente.
  • máximo : este valor mostra o total de buffers que pode ser fornecida a todas as consultas para ser usado como espaço de trabalho.
  • limite : este valor mostra o destino de execução de consulta para a fila de consulta grande. Esse valor difere o valor máximo (buffers) porque o valor máximo (buffers) não é atualizado até que haja alteração na fila.
  • Próxima solicitação : este valor mostra o tamanho da solicitação de memória, em buffers, para a próxima consulta de espera.
  • Aguardando para : este valor mostra a quantidade de memória que deve estar disponível para executar a consulta ao qual o valor Próximo solicitação se refere. O valor de Espera para é o valor de Solicitação Avançar multiplicado por um fator de espaço. Esse valor efetivamente garante que uma quantidade específica de memória estará disponível quando a próxima consulta de espera é executada.
  • custo : este valor mostra o custo da próxima consulta espera.
  • tempo limite : este valor mostra o tempo limite em segundos, para a próxima consulta de espera.
  • Tempo de espera : este valor mostra o tempo decorrido, em milissegundos, desde que a próxima consulta espera foi colocada na fila.
  • Último destino : este valor mostra o limite de memória geral para execução da consulta. Esse valor é o limite combinado para a fila de consulta grande e a fila de consulta pequeno.

Otimização

The next section is a summary of the users who are trying to optimize queries at the same time.
   Optimization Queue             Value
   ------------------------------ --------------------
   Overall Memory                 156672000
   Last Notification              1
   Timeout                        6
   Early Termination Factor       5

   (4 row(s) affected)

   Small Gateway                  Value
   ------------------------------ --------------------
   Configured Units               8
   Available Units                8
   Acquires                       0
   Waiters                        0
   Threshold Factor               250000
   Threshold                      250000

   (6 row(s) affected)

   Medium Gateway                 Value
   ------------------------------ --------------------
   Configured Units               2
   Available Units                2
   Acquires                       0
   Waiters                        0
   Threshold Factor               12

   (5 row(s) affected)

   Big Gateway                    Value
   ------------------------------ --------------------
   Configured Units               1
   Available Units                1
   Acquires                       0
   Waiters                        0
   Threshold Factor               8

   (5 row(s) affected)
Queries are submitted to the server for compilation. O processo de compilação inclui a análise, algebraization e otimização. Consultas são classificadas com base na quantidade de memória que cada consulta consumirá durante o processo de compilação.

Observação Esse valor não inclui a memória necessária para executar a consulta.

Quando uma consulta é iniciado, há não limite em quantas consultas podem ser compiladas. Como o consumo de memória aumenta e atinge um limite, a consulta deve passar um gateway para continuar. Há um limite progressivamente decrescente de consultas simultaneamente compilados após cada gateway. O tamanho de cada gateway depende da plataforma e da carga. Tamanhos de gateway são escolhidos para maximizar a taxa de transferência e a escalabilidade.

Se a consulta não é possível passar um gateway, a consulta aguardará até que haja memória disponível. Ou, a consulta retornará um erro de tempo limite (erro 8628). Além disso, a consulta não pode adquirir um gateway se o usuário cancela a consulta ou se um deadlock é detectado. Se uma consulta passar vários gateways, a consulta não libera os gateways menores até que o processo de compilação seja concluída.

Esse comportamento permite que apenas alguns que exijam muita memória compilações ocorrer ao mesmo tempo. Além disso, esse comportamento maximiza a taxa de transferência para consultas menores.

Agentes de memória

As próximas três seções mostram informações sobre agentes de memória que controle armazenada em cache memória, roubada memória e memória reservada. Informações que essas seções fornecem somente podem ser usadas para diagnósticos internos. Portanto, essas informações não são detalhadas aqui.
   MEMORYBROKER_FOR_CACHE           Value
   -------------------------------- --------------------
   Allocations                      1843
   Rate                             0
   Target Allocations               1843
   Future Allocations               0
   Last Notification                1

   (4 row(s) affected)

   MEMORYBROKER_FOR_STEAL           Value
   -------------------------------- --------------------
   Allocations                      380
   Rate                             0
   Target Allocations               1195
   Future Allocations               0
   Last Notification                1

   (4 row(s) affected)

   MEMORYBROKER_FOR_RESERVE         Value
   -------------------------------- --------------------
   Allocations                      0
   Rate                             0
   Target Allocations               1195
   Future Allocations               0
   Last Notification                1

   (4 row(s) affected)

Propriedades

ID do artigo: 907877 - Última revisão: terça-feira, 20 de novembro de 2007 - Revisão: 1.3
A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems
  • Microsoft SQL Server 2005 Enterprise X64 Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Standard X64 Edition
  • Microsoft SQL Server 2005 Workgroup Edition
  • Microsoft SQL Server 2005 Standard Edition for Itanium Based Systems
Palavras-chave: 
kbmt kbsql2005engine kbtshoot kbinfo KB907877 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: 907877

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