ID do artigo: 263889 - Última revisão: quarta-feira, 24 de novembro de 2010 - Revisão: 1.0 Descrição do SQL Server de bloqueio causados por bloqueios de compilação
Nesta páginaSumárioNo Microsoft SQL Server, somente uma cópia de um plano de procedimento armazenado costuma no cache ao mesmo tempo. Impor isso requer a serialização de algumas partes do processo de compilação e a sincronização é realizada em parte pelo uso de bloqueios de compilação. Se o número máximo de conexões ao mesmo tempo estejam executando o mesmo procedimento armazenado e um bloqueio de compilação deve ser obtido para esse procedimento armazenado toda vez que ele está sendo executado, IDs (SPIDs) de processo do sistema pode começar a bloquear um ao outro à medida que cada um deles tenta obter um bloqueio exclusivo de compilação no objeto. Mais InformaçõesRecompilação do procedimento armazenado é uma explicação para bloqueios de compilação em um disparador ou procedimento armazenado. Nesse caso, a solução é reduzir ou eliminar as recompilações. Para obter uma explicação das razões mais comuns para um procedimento armazenado talvez precise ser recompilado e algumas informações úteis na redução da freqüência de recompilações, consulte o seguinte artigo da Base de dados de Conhecimento da Microsoft: 243586
(http://support.microsoft.com/kb/243586/
)
Solucionando problemas de recompilação do procedimento armazenado Outro cenário em que os bloqueios de compilação ocorrerem é quando as seguintes condições forem verdadeiras:
Se um plano existente for encontrado, o SQL Server reutiliza o plano em cache e, na verdade, não compila o procedimento armazenado. No entanto, a falta de qualificação de proprietário força do SQL Server para executar uma segunda pesquisa de cache e obter um bloqueio exclusivo de compilação antes do programa determina que o plano de execução de cache existente pode ser reutilizado. Como obter o bloqueio e executar pesquisas e qualquer outro trabalho necessário para alcançar esse ponto podem introduzir um atraso de bloqueios de compilação ao bloqueio de clientes potenciais. Isso é especialmente verdadeiras se muitos usuários que não serão proprietário do procedimento armazenado, simultaneamente, execute o procedimento sem fornecer o nome do proprietário. Lembre-se de que mesmo se você não conseguir ver os SPIDs aguardando bloqueios de compilação, a falta de qualificação de proprietário pode apresentar atrasos na execução do procedimento armazenado e causar desnecessariamente alta utilização da CPU. The following sequence of events will be recorded in a SQL Server Profiler trace when this problem occurs. (To trace cache-related events, you must enable advanced events. To do this, clickOptionson theFerramentasmenu, and then selectAll event classes.) Recolher esta tabela
SP:CacheMissoccurs when the cache lookup by name fails. The followingSP:ExecContextHitindicates that a matching cached plan was ultimately found in cache after the ambiguous object name was resolved to an object ID. Depending on the circumstances,SP:CacheHitmay appear instead ofSP:ExecContextHit. The solution to this problem of compile locking is to make sure that references to stored procedures are owner-qualified. (Instead ofexec mystoredproc, use execdbo.mystoredproc.) While owner-qualification is important for performance reasons, you do not have to qualify the stored proc with the database name to prevent the additional cache lookup. Blocking that is caused by compile locks can be detected by using blocking scripts such as those that are defined in the following Microsoft Knowledge Base articles: 251004
(http://support.microsoft.com/kb/251004/
)
INF: How to monitor SQL Server 7.0 blocking 271509
(http://support.microsoft.com/kb/271509/
)
INF: How to monitor SQL Server 2000 blocking The following are some typical characteristics of compile blocking that can be observed in the blocking script output:
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]]Anotações
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 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: 263889
(http://support.microsoft.com/kb/263889/en-us/
)
| Outros Recursos Outros Sites de Suporte
ComunidadesObtenha Ajuda AgoraTraduções deste artigo
|






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


Voltar para o início