sys.dm_os_latch_stats (Transact-SQL)
Retorna as informações sobre todas as esperas de trava organizadas por classe.
Nome da coluna |
Tipo de dados |
Descrição |
||
---|---|---|---|---|
latch_class |
nvarchar(120) |
Nome da classe da trava. |
||
waiting_requests_count |
bigint |
Número de esperas em travas nessa classe. O contador é incrementado no início de uma espera de trava. |
||
wait_time_ms |
bigint |
Tempo de espera total, em milissegundos, nas travas dessa classe.
|
||
max_wait_time_ms |
bigint |
Tempo máximo durante qual um objeto de memória esperou essa trava. Se o valor for exageradamente alto, pode indicar um deadlock interno. |
Permissões
Requer a permissão VIEW SERVER STATE no servidor.
Comentários
sys.dm_os_latch_stats pode ser usado para identificar a origem de uma contenção de trava, examinando os números e os tempos de espera relativos para as diferentes classes de trava. Em algumas situações, talvez seja possível resolver ou reduzir contenção de trava. Entretanto, pode haver situações em que seja necessário contatar o Microsoft Serviço de Atendimento ao Cliente.
É possível redefinir o conteúdo de sys.dm_os_latch_stats usando DBCC SQLPERF da seguinte maneira:
DBCC SQLPERF ('sys.dm_os_latch_stats', CLEAR);
GO
Isso redefine todos os contadores como 0.
Observação |
---|
Essas estatísticas não persistirão se o SQL Server for reiniciado. Todos os dados são acumulados desde a última vez em que as estatísticas foram redefinidas ou desde que o SQL Server foi iniciado. |
Travas
Uma trava é um objeto de sincronização leve usado por vários componentes do SQL Server. A trava é usada basicamente para sincronizar páginas de banco de dados. Cada trava é associada a uma única unidade de alocação.
Uma espera de trava ocorre quando uma solicitação de trava não pode ser concedida imediatamente, porque a trava foi retida por outro thread em um modo conflitante. Ao contrário dos bloqueios, a trava é liberada logo após a operação, mesmo em operações de gravação.
As travas são agrupadas em classes baseadas em componentes e em utilização. Zero ou mais travas de uma classe específica podem existir a qualquer momento em uma instância do SQL Server.
Observação |
---|
sys.dm_os_latch_stats não rastreia as solicitações de trava que foram concedidas imediatamente ou que falharam sem esperar. |
A tabela a seguir contém breves descrições das diversas classes de trava.
Classe de trava |
Descrição |
---|---|
ALLOC_CREATE_RINGBUF |
Usada internamente pelo SQL Server para inicializar a sincronização da criação de um buffer de anel de alocação. |
ALLOC_CREATE_FREESPACE_CACHE |
Usada para inicializar a sincronização de caches internos de espaço livre para heaps. |
ALLOC_CACHE_MANAGER |
Usada para sincronizar testes de coerência internos. |
ALLOC_FREESPACE_CACHE |
Usada para sincronizar o acesso a um cache de páginas com espaço disponível para heaps e BLOBs (objetos binários grandes). A contenção em travas dessa classe pode ocorrer quando várias conexões tentam inserir linhas em um heap ou BLOB ao mesmo tempo. É possível reduzir essa contenção através do particionamento do objeto. Cada partição possui sua própria trava. O particionamento distribui as inserções em várias travas. |
ALLOC_EXTENT_CACHE |
Usada para sincronizar o acesso a um cache de extensões contendo páginas que não são alocadas. A contenção em travas dessa classe pode ocorrer quando várias conexões tentam alocar páginas de dados na mesma unidade de alocação ao mesmo tempo. Essa contenção pode ser reduzida através do particionamento do objeto do qual a unidade de alocação faz parte. |
ACCESS_METHODS_DATASET_PARENT |
Usada para sincronizar o acesso de conjunto de dados filho ao conjunto de dados pai durante operações paralelas. |
ACCESS_METHODS_HOBT_FACTORY |
Usada para sincronizar o acesso a uma tabela de hash interna. |
ACCESS_METHODS_HOBT |
Usada para sincronizar o acesso à representação em memória de um HoBt. |
ACCESS_METHODS_HOBT_COUNT |
Usada para sincronizar o acesso a uma página HoBt e contadores de linha. |
ACCESS_METHODS_HOBT_VIRTUAL_ ROOT |
Usada para sincronizar o acesso à abstração de página raiz de uma árvore B interna. |
ACCESS_METHODS_CACHE_ONLY_ HOBT_ALLOC |
Usada para sincronizar o acesso de tabela de trabalho. |
ACCESS_METHODS_BULK_ALLOC |
Usada para sincronizar o acesso dentro de alocadores em massa. |
ACCESS_METHODS_SCAN_RANGE_ GENERATOR |
Usada para sincronizar o acesso a um gerador de intervalos durante exames paralelos. |
ACCESS_METHODS_KEY_RANGE_ GENERATOR |
Usada para sincronizar o acesso a operações read-ahead durante exames paralelos de intervalo de chave. |
APPEND_ONLY_STORAGE_INSERT_ POINT |
Usada para sincronizar inserções em unidades de armazenamento rápidas somente de acréscimo. |
APPEND_ONLY_STORAGE_FIRST_ALLOC |
Usada ao sincronizar a primeira alocação para uma unidade de armazenamento somente de acréscimo. |
APPEND_ONLY_STORAGE_UNIT_ MANAGER |
Usada para sincronização de acesso de estrutura de dados interna dentro do gerenciador de unidades de armazenamento rápidas somente de acréscimo. |
APPEND_ONLY_STORAGE_MANAGER |
Usada para sincronizar operações de redução no gerenciador de unidades de armazenamento rápidas somente de acréscimo. |
BACKUP_RESULT_SET |
Usada para sincronizar conjuntos de resultados de backup paralelos. |
BACKUP_TAPE_POOL |
Usada para sincronizar pools de fita de backup. |
BACKUP_LOG_REDO |
Usada para sincronizar operações que refazem o log de backup. |
BACKUP_INSTANCE_ID |
Usada para sincronizar a geração de IDs de instâncias para contadores de monitoramento de desempenho de backup. |
BACKUP_MANAGER |
Usada para sincronizar o gerenciador de backup interno. |
BACKUP_MANAGER_DIFFERENTIAL |
Usada para sincronizar operações de backup diferencial com DBCC. |
BACKUP_OPERATION |
Usada para a sincronização da estrutura de dados interna dentro de uma operação de backup, tal como banco de dados, log ou backup de arquivo. |
BACKUP_FILE_HANDLE |
Usada para sincronizar operações de abertura de arquivos durante uma operação de restauração. |
BUFFER |
Usada para sincronizar o acesso a curto prazo a páginas de banco de dados. Uma trava de buffer é necessária antes de ler ou modificar qualquer página de banco de dados. A contenção da trava de buffer pode indicar vários problemas, inclusive hotpages e E/S lentas. Essa classe de trava abrange todos os possíveis usos de travas de página. sys.dm_os_wait_stats faz a distinção entre as esperas de trava de página causadas pelas operações de E/S e operações de leitura e gravação na página. |
BUFFER_POOL_GROW |
Usada para a sincronização do gerenciador de buffer interno durante as operações de geração de pools de buffers. |
DATABASE_CHECKPOINT |
Usada para serializar pontos de verificação dentro de um banco de dados. |
CLR_PROCEDURE_HASHTABLE |
Somente para uso interno. |
CLR_UDX_STORE |
Somente para uso interno. |
CLR_DATAT_ACCESS |
Somente para uso interno. |
CLR_XVAR_PROXY_LIST |
Somente para uso interno. |
DBCC_CHECK_AGGREGATE |
Somente para uso interno. |
DBCC_CHECK_RESULTSET |
Somente para uso interno. |
DBCC_CHECK_TABLE |
Somente para uso interno. |
DBCC_CHECK_TABLE_INIT |
Somente para uso interno. |
DBCC_CHECK_TRACE_LIST |
Somente para uso interno. |
DBCC_FILE_CHECK_OBJECT |
Somente para uso interno. |
DBCC_PERF |
Usada para sincronizar contadores de monitor de desempenho internos. |
DBCC_PFS_STATUS |
Somente para uso interno. |
DBCC_OBJECT_METADATA |
Somente para uso interno. |
DBCC_HASH_DLL |
Somente para uso interno. |
EVENTING_CACHE |
Somente para uso interno. |
FCB |
Usada para sincronizar o acesso ao bloco de controle de arquivo. |
FCB_REPLICA |
Somente para uso interno. |
FGCB_ALLOC |
Use para sincronizar o acesso às informações de alocação round robin em um grupo de arquivos. |
FGCB_ADD_REMOVE |
Use para sincronizar o acesso a grupos de arquivos para as operações de arquivo ADD e DROP. |
FILEGROUP_MANAGER |
Somente para uso interno. |
FILE_MANAGER |
Somente para uso interno. |
FILESTREAM_FCB |
Somente para uso interno. |
FILESTREAM_FILE_MANAGER |
Somente para uso interno. |
FILESTREAM_GHOST_FILES |
Somente para uso interno. |
FILESTREAM_DFS_ROOT |
Somente para uso interno. |
LOG_MANAGER |
Somente para uso interno. |
FULLTEXT_DOCUMENT_ID |
Somente para uso interno. |
FULLTEXT_DOCUMENT_ID_ TRANSACTION |
Somente para uso interno. |
FULLTEXT_DOCUMENT_ID_NOTIFY |
Somente para uso interno. |
FULLTEXT_LOGS |
Somente para uso interno. |
FULLTEXT_CRAWL_LOG |
Somente para uso interno. |
FULLTEXT_ADMIN |
Somente para uso interno. |
FULLTEXT_AMDIN_COMMAND_CACHE |
Somente para uso interno. |
FULLTEXT_LANGUAGE_TABLE |
Somente para uso interno. |
FULLTEXT_CRAWL_DM_LIST |
Somente para uso interno. |
FULLTEXT_CRAWL_CATALOG |
Somente para uso interno. |
FULLTEXT_FILE_MANAGER |
Somente para uso interno. |
DATABASE_MIRRORING_REDO |
Somente para uso interno. |
DATABASE_MIRRORING_SERVER |
Somente para uso interno. |
DATABASE_MIRRORING_CONNECTION |
Somente para uso interno. |
DATABASE_MIRRORING_STREAM |
Somente para uso interno. |
QUERY_OPTIMIZER_VD_MANAGER |
Somente para uso interno. |
QUERY_OPTIMIZER_ID_MANAGER |
Somente para uso interno. |
QUERY_OPTIMIZER_VIEW_REP |
Somente para uso interno. |
RECOVERY_BAD_PAGE_TABLE |
Somente para uso interno. |
RECOVERY_MANAGER |
Somente para uso interno. |
SECURITY_OPERATION_RULE_TABLE |
Somente para uso interno. |
SECURITY_OBJPERM_CACHE |
Somente para uso interno. |
SECURITY_CRYPTO |
Somente para uso interno. |
SECURITY_KEY_RING |
Somente para uso interno. |
SECURITY_KEY_LIST |
Somente para uso interno. |
SERVICE_BROKER_CONNECTION_RECEIVE |
Somente para uso interno. |
SERVICE_BROKER_TRANSMISSION |
Somente para uso interno. |
SERVICE_BROKER_TRANSMISSION_UPDATE |
Somente para uso interno. |
SERVICE_BROKER_TRANSMISSION_STATE |
Somente para uso interno. |
SERVICE_BROKER_TRANSMISSION_ERRORS |
Somente para uso interno. |
SSBXmitWork |
Somente para uso interno. |
SERVICE_BROKER_MESSAGE_TRANSMISSION |
Somente para uso interno. |
SERVICE_BROKER_MAP_MANAGER |
Somente para uso interno. |
SERVICE_BROKER_HOST_NAME |
Somente para uso interno. |
SERVICE_BROKER_READ_CACHE |
Somente para uso interno. |
SERVICE_BROKER_WAITFOR_MANAGER |
Somente para uso interno. |
SERVICE_BROKER_WAITFOR_TRANSACTION_DATA |
Somente para uso interno. |
SERVICE_BROKER_TRANSMISSION_TRANSACTION_DATA |
Somente para uso interno. |
SERVICE_BROKER_TRANSPORT |
Somente para uso interno. |
SERVICE_BROKER_MIRROR_ROUTE |
Somente para uso interno. |
TRACE_ID |
Somente para uso interno. |
TRACE_AUDIT_ID |
Somente para uso interno. |
TRACE |
Somente para uso interno. |
TRACE_CONTROLLER |
Somente para uso interno. |
TRACE_EVENT_QUEUE |
Somente para uso interno. |
TRANSACTION_DISTRIBUTED_MARK |
Somente para uso interno. |
TRANSACTION_OUTCOME |
Somente para uso interno. |
NESTING_TRANSACTION_READONLY |
Somente para uso interno. |
NESTING_TRANSACTION_FULL |
Somente para uso interno. |
MSQL_TRANSACTION_MANAGER |
Somente para uso interno. |
DATABASE_AUTONAME_MANAGER |
Somente para uso interno. |
UTILITY_DYNAMIC_VECTOR |
Somente para uso interno. |
UTILITY_SPARSE_BITMAP |
Somente para uso interno. |
UTILITY_DATABASE_DROP |
Somente para uso interno. |
UTILITY_DYNAMIC_MANAGER_VIEW |
Somente para uso interno. |
UTILITY_DEBUG_FILESTREAM |
Somente para uso interno. |
UTILITY_LOCK_INFORMATION |
Somente para uso interno. |
VERSIONING_TRANSACTION |
Somente para uso interno. |
VERSIONING_TRANSACTION_LIST |
Somente para uso interno. |
VERSIONING_TRANSACTION_CHAIN |
Somente para uso interno. |
VERSIONING_STATE |
Somente para uso interno. |
VERSIONING_STATE_CHANGE |
Somente para uso interno. |
KTM_VIRTUAL_CLOCK |
Somente para uso interno. |
Consulte também
Referência
Exibições e funções de gerenciamento dinâmico (Transact-SQL)
Exibições de gerenciamento dinâmico relacionadas ao sistema operacional do SQL Server (Transact-SQL)