Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:Banco de Dados SQL do
Azure
Instância Gerenciada de SQL do Azure
Azure Synapse Analytics
Analytics Platform System (PDW)
Banco de Dados SQL no Microsoft Fabric
Devolve informações sobre todas as esperas de latch organizadas por turma.
Observação
Para chamar isto de Azure Synapse Analytics ou Analytics Platform System (PDW), use o nome sys.dm_pdw_nodes_os_latch_stats. Essa sintaxe não é suportada pelo pool SQL sem servidor no Azure Synapse Analytics.
| Nome da coluna | Tipo de dados | Description |
|---|---|---|
| latch_class | Nvarchar(60) | Nome da classe de latch. |
| waiting_requests_count | bigint | Número de esperas em trancos nesta turma. Este contador é incrementado no início de uma espera de trava. |
| wait_time_ms | bigint | O tempo total de espera, em milissegundos, nos fechos nesta aula. Nota: Esta coluna é atualizada a cada cinco minutos durante uma espera por latch e no final daquela espera. |
| max_wait_time_ms | bigint | Tempo máximo que um objeto de memória esperou nesta trava. Se este valor for invulgarmente alto, pode indicar um bloqueio interno. |
| pdw_node_id | int |
Aplica-se a: Azure Synapse Analytics, Analytics Platform System (PDW) O identificador do nó em que esta distribuição se encontra. |
Permissions
No SQL Server e na Instância Gerenciada do SQL, requer VIEW SERVER STATE permissão.
No Banco de Dados SQL Basic, S0e S1 objetivos de serviço e para bancos de dados em pools elásticos , a conta de de administrador do servidor, a conta de de administrador do Microsoft Entra ou a associação aode função de servidor ##MS_ServerStateReader## é necessária. Em todos os outros objetivos de serviço do Banco de dados SQL, é necessária a permissão VIEW DATABASE STATE no banco de dados ou a associação à função de servidor ##MS_ServerStateReader##.
Permissões para SQL Server 2022 e posterior
Requer a permissão VIEW SERVER PERFORMANCE STATE no servidor.
Observações
sys.dm_os_latch_stats pode ser usado para identificar a origem da contenda de latch examinando os números de espera relativos e os tempos de espera para as diferentes classes de latch. Em algumas situações, pode conseguir resolver ou reduzir a contenção do fecho. No entanto, pode haver situações que exigirão que você entre em contato com o Atendimento Microsoft.
Pode reiniciar o conteúdo da sys.dm_os_latch_stats usando DBCC SQLPERF o seguinte:
DBCC SQLPERF ('sys.dm_os_latch_stats', CLEAR);
GO
Isso redefine todos os contadores para 0.
Observação
Essas estatísticas não serão mantidas se o SQL Server for reiniciado. Todos os dados são cumulativos desde a última vez que as estatísticas foram redefinidas ou desde que o SQL Server foi iniciado.
Latches
Um latch é um objeto de sincronização interno leve semelhante a um cadeado, utilizado por vários componentes do SQL Server. Um latch é usado principalmente para sincronizar páginas da base de dados durante operações como buffer ou acesso a ficheiros. Cada fecho está associado a uma única unidade de alocação.
Uma espera de latch ocorre quando um pedido de latch não pode ser concedido imediatamente, porque o latch é mantido por outro thread num modo conflituoso. Ao contrário das fechaduras, uma trava é libertada imediatamente após a operação, mesmo em operações de escrita.
Os fechos são agrupados em classes com base nos componentes e na utilização. Nenhum ou mais latches de uma determinada classe podem existir a qualquer momento numa instância do SQL Server.
Observação
sys.dm_os_latch_stats não acompanha pedidos de latch que foram concedidos imediatamente ou que falharam sem esperar.
A tabela seguinte contém breves descrições das várias classes de latch.
| Classe de latch | Description |
|---|---|
| ALLOC_CREATE_RINGBUF | Usado internamente pelo SQL Server para inicializar a sincronização da criação de um buffer de anel de alocação. |
| ALLOC_CREATE_FREESPACE_CACHE | Usado para inicializar a sincronização de caches internas de espaço livre para heaps. |
| ALLOC_CACHE_MANAGER | Usado para sincronizar testes internos de coerência. |
| ALLOC_FREESPACE_CACHE | Usado para sincronizar o acesso a uma cache de páginas com espaço disponível para heaps e objetos binários grandes (BLOBs). A contenção em latches desta classe pode ocorrer quando múltiplas ligações tentam inserir linhas num heap ou BLOB ao mesmo tempo. Pode reduzir esta contenção particionando o objeto. Cada partição tem o seu próprio fecho. A partição distribuirá os inserts por múltiplos fechos. |
| ALLOC_EXTENT_CACHE | Usado para sincronizar o acesso a um cache de extensões que contém páginas não alocadas. A contenção em latches desta classe pode ocorrer quando múltiplas ligações tentam alocar páginas de dados na mesma unidade de alocação ao mesmo tempo. Esta contenção pode ser reduzida particionando o objeto do qual esta unidade de alocação faz parte. |
| ACCESS_METHODS_DATASET_PARENT | Usado para sincronizar o acesso ao conjunto de dados filho ao conjunto de dados pai durante operações paralelas. |
| ACCESS_METHODS_HOBT_FACTORY | Usado para sincronizar o acesso a uma tabela de hash interna. |
| ACCESS_METHODS_HOBT | Usado para sincronizar o acesso à representação em memória de um HoBt. |
| ACCESS_METHODS_HOBT_COUNT | Usado para sincronizar o acesso a uma página HoBt e contadores de linhas. |
| ACCESS_METHODS_HOBT_VIRTUAL_ROOT | Usado para sincronizar o acesso à abstração da página raiz de uma árvore B interna. |
| ACCESS_METHODS_CACHE_ONLY_HOBT_ALLOC | Usado para sincronizar o acesso à mesa de trabalho. |
| ACCESS_METHODS_BULK_ALLOC | Usado para sincronizar o acesso dentro de alocadores em massa. |
| ACCESS_METHODS_SCAN_RANGE_GENERATOR | Usado para sincronizar o acesso a um gerador de alcance durante varreduras paralelas. |
| ACCESS_METHODS_KEY_RANGE_GENERATOR | Usado para sincronizar o acesso a operações de leitura antecipada durante varrimentos paralelos de intervalo de chaves. |
| APPEND_ONLY_STORAGE_INSERT_POINT | Usado para sincronizar inserções em unidades de armazenamento rápidas apenas com anexação. |
| APPEND_ONLY_STORAGE_FIRST_ALLOC | Usado para sincronizar a primeira alocação para uma unidade de armazenamento apenas de anexação. |
| APPEND_ONLY_STORAGE_UNIT_MANAGER | Usado para sincronização interna de acesso a estruturas de dados dentro do gestor rápido de unidades de armazenamento apenas para anexação. |
| APPEND_ONLY_STORAGE_MANAGER | Usado para sincronizar operações de redução no gestor rápido de unidades de armazenamento apenas para anexação. |
| BACKUP_RESULT_SET | Usado para sincronizar conjuntos paralelos de resultados de backup. |
| BACKUP_TAPE_POOL | Usado para sincronizar pools de fitas de backup. |
| BACKUP_LOG_REDO | Usado para sincronizar operações de refaz de registos de backup. |
| BACKUP_INSTANCE_ID | Usado para sincronizar a geração de IDs de instância para contadores de monitorização de desempenho de backup. |
| BACKUP_MANAGER | Usado para sincronizar o gestor interno de backups. |
| BACKUP_MANAGER_DIFFERENTIAL | Usado para sincronizar operações de backup diferencial com DBCC. |
| BACKUP_OPERATION | Usado para sincronização interna de estruturas de dados dentro de uma operação de backup, como backup de bases de dados, registos ou ficheiros. |
| BACKUP_FILE_HANDLE | Usado para sincronizar operações de abertura de ficheiros durante uma operação de restauro. |
| BUFFER | Usado para sincronizar o acesso de curto prazo às páginas da base de dados. É necessário um buffer latch antes de ler ou modificar qualquer página da base de dados. A contenção do latch do buffer pode indicar vários problemas, incluindo páginas quentes e entradas/saídas lentas. Esta aula de latch cobre todas as possíveis utilizações dos fechos de página. sys.dm_os_wait_stats faz diferença entre as esperas de latch da página causadas por operações de I/O e as operações de leitura e escrita na página. |
| BUFFER_POOL_GROW | Usado para sincronização interna do gestor de buffers durante operações de crescimento do pool de buffer. |
| DATABASE_CHECKPOINT | Usado para serializar checkpoints dentro de uma base de dados. |
| CLR_PROCEDURE_HASHTABLE | Apenas para uso interno. |
| CLR_UDX_STORE | Apenas para uso interno. |
| CLR_DATAT_ACCESS | Apenas para uso interno. |
| CLR_XVAR_PROXY_LIST | Apenas para uso interno. |
| DBCC_CHECK_AGGREGATE | Apenas para uso interno. |
| DBCC_CHECK_RESULTSET | Apenas para uso interno. |
| DBCC_CHECK_TABLE | Apenas para uso interno. |
| DBCC_CHECK_TABLE_INIT | Apenas para uso interno. |
| DBCC_CHECK_TRACE_LIST | Apenas para uso interno. |
| DBCC_FILE_CHECK_OBJECT | Apenas para uso interno. |
| DBCC_PERF | Usado para sincronizar contadores internos de monitorização de desempenho. |
| DBCC_PFS_STATUS | Apenas para uso interno. |
| DBCC_OBJECT_METADATA | Apenas para uso interno. |
| DBCC_HASH_DLL | Apenas para uso interno. |
| EVENTING_CACHE | Apenas para uso interno. |
| FCB | Usado para sincronizar o acesso ao bloco de controlo de ficheiros. |
| FCB_REPLICA | Apenas para uso interno. |
| FGCB_ALLOC | Use para sincronizar o acesso à informação de alocação round robin dentro de um grupo de ficheiros. |
| FGCB_ADD_REMOVE | Use para sincronizar o acesso a grupos de ficheiros para operações de adicionar, eliminar, crescer e reduzir ficheiros. |
| FILEGROUP_MANAGER | Apenas para uso interno. |
| FILE_MANAGER | Apenas para uso interno. |
| FILESTREAM_FCB | Apenas para uso interno. |
| FILESTREAM_FILE_MANAGER | Apenas para uso interno. |
| FILESTREAM_GHOST_FILES | Apenas para uso interno. |
| FILESTREAM_DFS_ROOT | Apenas para uso interno. |
| LOG_MANAGER | Apenas para uso interno. |
| FULLTEXT_DOCUMENT_ID | Apenas para uso interno. |
| FULLTEXT_DOCUMENT_ID_TRANSACTION | Apenas para uso interno. |
| FULLTEXT_DOCUMENT_ID_NOTIFY | Apenas para uso interno. |
| FULLTEXT_LOGS | Apenas para uso interno. |
| FULLTEXT_CRAWL_LOG | Apenas para uso interno. |
| FULLTEXT_ADMIN | Apenas para uso interno. |
| FULLTEXT_AMDIN_COMMAND_CACHE | Apenas para uso interno. |
| FULLTEXT_LANGUAGE_TABLE | Apenas para uso interno. |
| FULLTEXT_CRAWL_DM_LIST | Apenas para uso interno. |
| FULLTEXT_CRAWL_CATALOG | Apenas para uso interno. |
| FULLTEXT_FILE_MANAGER | Apenas para uso interno. |
| DATABASE_MIRRORING_REDO | Apenas para uso interno. |
| DATABASE_MIRRORING_SERVER | Apenas para uso interno. |
| DATABASE_MIRRORING_CONNECTION | Apenas para uso interno. |
| DATABASE_MIRRORING_STREAM | Apenas para uso interno. |
| QUERY_OPTIMIZER_VD_MANAGER | Apenas para uso interno. |
| QUERY_OPTIMIZER_ID_MANAGER | Apenas para uso interno. |
| QUERY_OPTIMIZER_VIEW_REP | Apenas para uso interno. |
| RECOVERY_BAD_PAGE_TABLE | Apenas para uso interno. |
| RECOVERY_MANAGER | Apenas para uso interno. |
| SECURITY_OPERATION_RULE_TABLE | Apenas para uso interno. |
| SECURITY_OBJPERM_CACHE | Apenas para uso interno. |
| SECURITY_CRYPTO | Apenas para uso interno. |
| SECURITY_KEY_RING | Apenas para uso interno. |
| SECURITY_KEY_LIST | Apenas para uso interno. |
| SERVICE_BROKER_CONNECTION_RECEIVE | Apenas para uso interno. |
| SERVICE_BROKER_TRANSMISSION | Apenas para uso interno. |
| SERVICE_BROKER_TRANSMISSION_UPDATE | Apenas para uso interno. |
| SERVICE_BROKER_TRANSMISSION_STATE | Apenas para uso interno. |
| SERVICE_BROKER_TRANSMISSION_ERRORS | Apenas para uso interno. |
| SSBXmitWork | Apenas para uso interno. |
| SERVICE_BROKER_MESSAGE_TRANSMISSION | Apenas para uso interno. |
| SERVICE_BROKER_MAP_MANAGER | Apenas para uso interno. |
| SERVICE_BROKER_HOST_NAME | Apenas para uso interno. |
| SERVICE_BROKER_READ_CACHE | Apenas para uso interno. |
| SERVICE_BROKER_WAITFOR_MANAGER | Usado para sincronizar um mapa ao nível de instância das filas de espera. Existe uma fila por cada tupla ID de base de dados, Versão da Base de Dados e ID da Fila. A contenção em latches desta classe pode ocorrer quando muitas ligações estão: Num estado WAITFOR(RECEIVE) wait; chamando WAITFOR(RECEIVE); ultrapassar o tempo ESPERA; receber uma mensagem; confirmar ou reverter a transação que contém o WAITFOR(RECEIVE); Podes reduzir a contenção diminuindo o número de threads num estado de espera (RECEIVE). |
| SERVICE_BROKER_WAITFOR_TRANSACTION_DATA | Apenas para uso interno. |
| SERVICE_BROKER_TRANSMISSION_TRANSACTION_DATA | Apenas para uso interno. |
| SERVICE_BROKER_TRANSPORT | Apenas para uso interno. |
| SERVICE_BROKER_MIRROR_ROUTE | Apenas para uso interno. |
| TRACE_ID | Apenas para uso interno. |
| TRACE_AUDIT_ID | Apenas para uso interno. |
| RASTREIO | Apenas para uso interno. |
| TRACE_CONTROLLER | Apenas para uso interno. |
| TRACE_EVENT_QUEUE | Apenas para uso interno. |
| TRANSACTION_DISTRIBUTED_MARK | Apenas para uso interno. |
| TRANSACTION_OUTCOME | Apenas para uso interno. |
| NESTING_TRANSACTION_READONLY | Apenas para uso interno. |
| NESTING_TRANSACTION_FULL | Apenas para uso interno. |
| MSQL_TRANSACTION_MANAGER | Apenas para uso interno. |
| DATABASE_AUTONAME_MANAGER | Apenas para uso interno. |
| UTILITY_DYNAMIC_VECTOR | Apenas para uso interno. |
| UTILITY_SPARSE_BITMAP | Apenas para uso interno. |
| UTILITY_DATABASE_DROP | Apenas para uso interno. |
| UTILITY_DYNAMIC_MANAGER_VIEW | Apenas para uso interno. |
| UTILITY_DEBUG_FILESTREAM | Apenas para uso interno. |
| UTILITY_LOCK_INFORMATION | Apenas para uso interno. |
| VERSIONING_TRANSACTION | Apenas para uso interno. |
| VERSIONING_TRANSACTION_LIST | Apenas para uso interno. |
| VERSIONING_TRANSACTION_CHAIN | Apenas para uso interno. |
| VERSIONING_STATE | Apenas para uso interno. |
| VERSIONING_STATE_CHANGE | Apenas para uso interno. |
| KTM_VIRTUAL_CLOCK | Apenas para uso interno. |
Observação
A documentação usa o termo árvore B geralmente em referência a índices. Em índices de armazenamento em linha, o Mecanismo de Base de Dados implementa uma árvore B+. Isso não se aplica a índices de armazenamento em colunas ou a índices em tabelas com otimização de memória. Para obter mais informações, consulte o guia de arquitetura e design de índices do SQL Server e Azure SQL .
Ver também
DBCC SQLPERF (Transact-SQL)
Exibições de gerenciamento dinâmico relacionadas ao sistema operacional SQL Server (Transact-SQL)
SQL Server, Latches Object