Artigo: 263889 - Última revisão: quarta-feira, 24 de Novembro de 2010 - Revisão: 1.0 Descrição do SQL Server bloqueio causada por bloqueios de compilação
Nesta páginaSumárioNo Microsoft SQL Server, apenas uma cópia de um plano de procedimento armazenado é geralmente na cache de cada vez. Aplicar este requer a serialização de algumas partes do processo de elaboração e esta sincronização é efectuada em parte utilizando bloqueios de compilação. Se o número de ligações em simultâneo com o mesmo procedimento armazenado e um bloqueio de compilação deve ser obtido para esse procedimento armazenado sempre que for executada, poderá começar o processo de sistema IDs (SPID) bloquear um outro como cada tentam obter um bloqueio exclusivo de compilação no objecto. Mais InformaçãoProcedimento armazenado recompilation é uma explicação de bloqueios de compilação num procedimento armazenado ou accionador. A solução é, neste caso, para reduzir ou eliminar as recompilações. Para obter uma explicação das razões mais comuns que pode ter um procedimento armazenado para ser novamente compiladas e algumas informações úteis sobre como reduzir a frequência de recompilações, consulte o seguinte artigo da Microsoft Knowledge Base: 243586
(http://support.microsoft.com/kb/243586/
)
Resolução de problemas recompilation de procedimento armazenado Outro cenário em que ocorrem os bloqueios de compilação é quando as seguintes condições são verdadeiras:
Se for encontrado um plano existente, o SQL Server reutiliza o plano armazenado em cache e não efectivamente a compilar o procedimento armazenado. No entanto, a falta de qualificação de proprietário força o SQL Server para efectuar uma pesquisa na cache segunda e obter um bloqueio exclusivo de compilação antes do programa determina que o plano de execução em cache existentes pode ser reutilizado. Obter o bloqueio e efectuar pesquisas e outros trabalhos que é necessária para atingir este ponto podem introduzir um atraso para os bloqueios de compilação que conduz a bloquear. Isto é especialmente verdadeiras se muitos utilizadores que não sejam proprietário o procedimento armazenado em simultâneo, execute o procedimento sem fornecer o nome do proprietário. Tenha em atenção que mesmo se não vir o SPID aguardar bloqueios de compilação, falta de qualificação de proprietário pode introduzir atrasos na execução do procedimento armazenado e causar desnecessariamente elevada taxa de utilização da CPU. Quando este problema ocorre a seguinte sequência de eventos será registada num rastreio do SQL Server Profiler. (Para rastrear eventos relacionados com a cache, tem de activar eventos avançados. Para o fazer, clique emOpçõessobre oFerramentasmenu e, em seguida, seleccioneTodas as classes de evento.) Reduzir esta tabela
SP:CacheMissocorre quando falha a pesquisa na cache pelo nome. O seguinteSP:ExecContextHitindica que um plano armazenado em cache correspondente em última análise foi encontrado no cache após o nome do objecto ambíguo foi resolvido para um ID de objecto. Consoante o caso,SP:CacheHitpoderá ser apresentado em vez deSP:ExecContextHit. A solução para este problema de bloqueio de compilação é certificar-se de que as referências a procedimentos armazenados são qualificados de proprietário. (Em vez deexec mystoredproc, utilize execdbo.mystoredproc.) Enquanto a qualificação de proprietário é importante por motivos de desempenho, não é necessário que qualificar o procedimento armazenado com o nome de base de dados para evitar a pesquisa de cache adicionais. Bloqueio que é causado por compilação bloqueios podem ser detectados utilizando scripts de bloqueio, tais como as que são definidas nos seguintes artigos da Microsoft Knowledge Base: 251004
(http://support.microsoft.com/kb/251004/
)
INF: Como monitorar o bloqueio do SQL Server 7. 0 271509
(http://support.microsoft.com/kb/271509/
)
INF: Como monitorar o bloqueio do SQL Server 2000 Seguem-se algumas características típicas de compilação de bloqueio podem ser observada no resultado do script bloqueio:
spid blocked waittype waittime lastwaittype waitresource
---- ------- -------- -------- ------------ -------------------------
221 29 0x000e 2141 LCK_M_X TAB: 6:834102 [[COMPILE]]
228 29 0x000e 2235 LCK_M_X TAB: 6:834102 [[COMPILE]]
29 214 0x000e 3937 LCK_M_X TAB: 6:834102 [[COMPILE]]
13 214 0x000e 1094 LCK_M_X TAB: 6:834102 [[COMPILE]]
68 214 0x000e 1968 LCK_M_X TAB: 6:834102 [[COMPILE]]
214 0 0x0000 0 LCK_M_X TAB: 6:834102 [[COMPILE]]Notas
Known issuesHere are some known issues that can prevent plan caching:
A informação contida neste artigo aplica-se a:
Tradução automáticaIMPORTANTE: 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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado. Clique aqui para ver a versão em Inglês deste artigo: 263889
(http://support.microsoft.com/kb/263889/en-us/
)
| Outros Recursos Outros Sites de Suporte
ComunidadesObtenha Ajuda AgoraTraduções de Artigos
|






Windows Live
Facebook
Twitter
Linkedin
Digg it
Yahoo
Delicious
StumbleUpon
Yammer
Reddit
Technorati
FriendFeed
Email


Voltar ao topo