Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A classe de evento Aviso de Hash pode ser usada para monitorar quando ocorreu uma recursão de hash ou cessação de hash (resgate de hash) durante uma operação de hash.
A recursão de hash ocorre quando a entrada de build não se encaixa na memória disponível, resultando na divisão de entrada em várias partições que são processadas separadamente. Se qualquer uma dessas partições ainda não se ajustar à memória disponível, ela será dividida em subpartições, que também são processadas separadamente. Esse processo de divisão continua até que cada partição se ajuste à memória disponível ou até que o nível máximo de recursão seja atingido (exibido na coluna de dados IntegerData).
O resgate de hash ocorre quando uma operação de hash atinge seu nível máximo de recursão e muda para um plano alternativo para processar os dados particionados restantes. O resgate de hash geralmente ocorre devido a dados distorcidos.
A recursão de hash e o resgate de hash causam desempenho reduzido no servidor. Para eliminar ou reduzir a frequência de recursão e resgates de hash, siga um destes procedimentos:
Verifique se existem estatísticas nas colunas que estão sendo unidas ou agrupadas.
Se houver estatísticas nas colunas, atualize-as.
Use um tipo diferente de junção. Por exemplo, use uma junção do tipo MERGE ou LOOP, se apropriado.
Aumente a memória disponível no computador. A recursão ou fallback de hash ocorre quando não há memória suficiente para processar consultas na memória e elas precisam ser escritas no disco.
Criar ou atualizar as estatísticas na coluna envolvida na junção é a maneira mais eficaz de reduzir o número de recursões ou resgates de hash que ocorrem.
Observação
Os termos grace hash join e recursive hash join também são usados para descrever o resgate de hash.
Importante
Para determinar onde o evento Aviso de Hash está ocorrendo quando o otimizador de consulta gera um plano de execução, você também deve coletar uma classe de evento Showplan no rastreamento. Você pode escolher qualquer uma das classes de evento Showplan, exceto as classes de evento Showplan Text e Showplan Text (Unencoded), que não retornam uma ID do Nó. IDs de nó em Planos de Execução identificam cada operação que o otimizador de consulta executa quando gera um plano de execução de consulta. Essas operações são chamadas operadores, e cada operador em um showplan possui um ID de nó. A coluna ObjectID para eventos de Aviso de Hash corresponde ao Node ID em Showplans, permitindo que você determine qual operador, ou operação, está causando o erro.
Colunas de dados da classe de evento de alerta de hash
| Nome da coluna de dados | Tipo de dados | Descrição | ID da coluna | Filtrável |
|---|---|---|---|---|
| NomeDaAplicação | nvarchar |
Nome do aplicativo cliente que criou a conexão com uma instância do SQL Server. Esta coluna é preenchida com os valores passados pelo aplicativo em vez de com o nome exibido do programa. | 10 | Sim |
| ClientProcessID | int |
ID atribuída pelo computador host ao processo em que o aplicativo cliente está sendo executado. Essa coluna de dados será preenchida se o cliente fornecer uma ID de processo do cliente. | 9 | Sim |
| ID do Banco de Dados | int |
ID do banco de dados especificado pela instrução de banco de dados USE ou o banco de dados padrão se nenhuma instrução de banco de dados USE tiver sido emitida para uma determinada instância. O SQL Server Profiler exibirá o nome do banco de dados se a coluna de dados ServerName for capturada no rastreamento e o servidor estiver disponível. Determine o valor para um banco de dados usando a função DB_ID. | 3 | Sim |
| Nome do Banco de Dados | nvarchar |
Nome do banco de dados no qual a instrução do usuário está sendo executada. | 35 | Sim |
| EventClass | int |
Tipo de evento = 55. | 27 | Não |
| Sequência de Eventos | int |
Sequência de um determinado evento na solicitação. | 51 | Não |
| Subclasse de Evento | int |
Tipo de subclasse de evento. 0=Recursão 1=Resgate |
21 | Sim |
| ID do Grupo | int |
ID do grupo de carga de trabalho no qual o evento de Rastreamento do SQL dispara. | 66 | Sim |
| nome do host | nvarchar |
Nome do computador no qual o cliente está sendo executado. Essa coluna de dados será populada se o cliente fornecer o nome do host. Para determinar o nome do host, use a função HOST_NAME . | 8 | Sim |
| DadosInteiros | int |
Nível de recursão (somente recursão de hash). | vinte e cinco | Sim |
| IsSystem | int |
Indica se o evento ocorreu em um processo do sistema ou do usuário. 1 = sistema, 0 = usuário. | 60 | Sim |
| Nome de Usuário | nvarchar |
Nome do logon do usuário (logon de segurança do SQL Server ou as credenciais de logon do Windows na forma de <DOMÍNIO>\<nome de> usuário). | 11 | Sim |
| LoginSid | image |
Número SID (identificação de segurança) do usuário que fez logon. Você pode encontrar essas informações na exibição de catálogo sys.server_principals. Cada SID é exclusivo para cada logon no servidor. | 41 | Sim |
| Nome do Domínio NT | nvarchar |
O domínio do Windows ao qual o usuário pertence. | 7 | Sim |
| NTUserName | nvarchar |
Nome do usuário do Windows. | 6 | Sim |
| ID do objeto | int |
ID do nó raiz da equipe de hash envolvida na redistribuição. Corresponde à ID do Nó em Planos de Execução. | 22 | Sim |
| RequestID | int |
ID da solicitação que contém a instrução. | 49 | Sim |
| Nome do Servidor | nvarchar |
Nome da instância do SQL Server que está sendo rastreada. | 26 | |
| SessionLoginName | nvarchar |
Nome de logon do usuário que originou a sessão. Por exemplo, se você se conectar ao SQL Server usando Login1 e executar uma instrução como Login2, SessionLoginName mostrará Login1 e LoginName mostrará Login2. Esta coluna exibe logons do SQL Server e do Windows. | 64 | Sim |
| SPID (Sistema de Identidade Público Digital) | int |
Identificação da sessão em que ocorreu o evento. | 12 | Sim |
| HoraDeInício | datetime |
Hora de início do evento, se disponível. | 14 | Sim |
| TransactionID | bigint |
ID da transação atribuída pelo sistema. | 4 | Sim |
| XactSequence | bigint |
Token que descreve a transação atual. | 50 | Sim |