PROBLEMA: Aninhado associação de loop que usa A "BOOKMARK PROC.. pré-busca .WITH" pode manter mais bloqueios

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

Sintomas

Se um plano de execução usa uma associação de loop Nested e um indicador de pesquisa, que utiliza a cláusula WITH pré-busca, os bloqueios são mantidos para a duração das associações de loop aninhadas determinar os indicadores qualificados. Depois que o indicador é usado para buscar os dados de coluna pendentes e que dados são colocados no buffer de saída, o bloqueio, em seguida, é liberado. Esse comportamento pode causar o bloqueio de outras ids de processo do sistema (spids).

Como Contornar

Se você alterar a dica de associação de LOOP para HASH ou mesclar, o bloqueio não ocorrerá.

Mais Informações

Esse comportamento pode ser ilustrado utilizando o exemplo a seguir:
SELECT c.mstr_acct, c.last_name_m, c.first_name, c.name_prefix, c.company_name
FROM tickler a 
 INNER LOOP JOIN member b    ON a.mbr_acct = b.mbr_acct 
 INNER LOOP JOIN person c    ON b.mstr_acct = c.mstr_acct 
WHERE a.tickler_code = 'SPIRITEXT' 
				
o SHOWPLAN saída para segue a consulta anterior:
StmtText                                                                                                                                            
---------------------------------------------------------------------------------------------------------------------------------------------
  |--Bookmark Lookup(BOOKMARK:([Bmk1002]), OBJECT:([TestLoopJoin].[dbo].[person] AS [c]) WITH PREFETCH)
       |--Nested Loops(Inner Join)
            |--Nested Loops(Inner Join)
            |    |--Index Seek(OBJECT:([TestLoopJoin].[dbo].[tickler].[tickler_code] AS [a]), SEEK:([a].[tickler_code]='SPIRITEXT') ORDERED)
            |    |--Clustered Index Seek(OBJECT:([TestLoopJoin].[dbo].[member].[pk_member] AS [b]), SEEK:([b].[mbr_acct]=[a].[mbr_acct])  ORDERED)
            |--Index Seek(OBJECT:([TestLoopJoin].[dbo].[person].[pk_person] AS [c]), SEEK:([c].[mstr_acct]=[b].[mstr_acct]) ORDERED)
				
o comportamento de bloqueio é observado prontamente iniciando outra conexão que executa um UPDATE em primeiras linhas sendo selecionadas da tabela. Você notará que o UPDATE é bloqueado até que todas as pesquisas as indicador para a instrução SELECT são processadas e as linhas são enviadas para o cliente. pesquisa de indicador

O operador de lógico e físico do indicador pesquisa usa um indicador (identificação de linha ou chave de cluster) para pesquisar a linha correspondente da tabela ou índice de cluster. A coluna de argumento contém o rótulo de indicador usado para pesquisar a linha da tabela ou índice de cluster. A coluna de argumento também contém o nome da tabela ou índice de cluster no qual a linha é pesquisada. Se a cláusula WITH pré-busca for exibido na coluna argumento, em seguida, o processador de consultas determinou que ele é ideal para usar assíncrona prefetching (read-ahead) ao pesquisar indicadores na tabela ou índice de cluster.

Propriedades

ID do artigo: 260652 - Última revisão: sexta-feira, 17 de outubro de 2003 - Revisão: 3.2
A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2000 Standard Edition
Palavras-chave: 
kbmt kbpending kbprb KB260652 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: 260652

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