sera que ela e"efetiva" ? Facamos um teste com os comandos abaixo:KILL 54Anteriormentehaviam 25 bloqueios e a sessao 54 e responsavel por 6 desses 25 bloqueios (maisde 20%). Considerando que existem 28 sessoes (minhas 3 e 25 da aplicacao) mataruma unica sessao e liberar 20% dos bloqueios parece ser uma ideia beminteressante. Apos eliminar esse processo e efetuar novamente a consulta dosmaiores bloqueadores, e obtido o seguinte resultado: Sessao Total de Bloqueios 55 5 63 5 52 4 57 4 59 3 62 2 77 1 Aoinves de restarem apenas 19 bloqueios (6 a menos em relacao aos 25), restaram24 bloqueios. Isso significa que eliminar a sessao 54 e seus seis bloqueiosreduziu a quantidade de bloqueios de 25 para 24 significando muito pouco emrelacao ao total de bloqueios. Isso ocorre porque embora a sessoes 54 tenhasido eliminada, as sessoes que estavam aguardando por ela agora estaobloqueadas por outras sessoes. Seguindo ainda a mesma linha, os maioresbloqueadores sao as sessoes 55 e 63 empatando com 5 bloqueios cada totalizando10 bloqueios. O comando abaixo elimina essas sessoes:KILL 55KILL 63Aposeliminar as sessoes 55 e 63, a relacao dos maiores bloqueadores e exibida natabela abaixo: Sessao Total de Bloqueios 52 4 56 4 57 4 65 4 59 3 62 2 77 1 Noinicio da analise havia 28 sessoes e 25 bloqueios. Eliminou-se as sessoes quemantinham mais bloqueios e mesmo assim o numero de bloqueios diminuiulentamente. Eliminou-se 3 sessoes e o numero de bloqueios caiu de 25 para 22.Se o raciocinio for mantido podera ser necessario eliminar muitos outrosbloqueios para que um resultado visivel possa ser obtido. Cada sessao eliminadae uma "esperanca" de que as coisas voltem a funcionar, mas podesignificar uma transacao incompleta e boas "dores de cabeca".Aideia de pesquisar os maiores bloqueadores e interessante, mas pode levar ainterpretacoes equivocadas. O interessante nao e procurar os maioresbloqueadores, pois, o resultado sao quantos bloqueios "diretos" cadasessao provoca. A sessoes 54 provocava 6 bloqueios, mas se considerarmos que asessao 52 bloqueava a 54 seria visivel que eliminar a sessao 52 e bem maisefetivo ja que mais bloqueios (quer sejam diretos ou indiretos) seriamdesfeitos. Se essa sessao bloqueasse somente a sessao 54 por exemplo, teriamos5 bloqueios diretos (os que a sessao 52 bloqueia diretamente) e mais 6bloqueios indiretos (os bloqueios impostos pela sessao 54) totalizando 9bloqueios.Essee a grande dificuldade quando se depara com cadeias de bloqueios. Comoidentificar exatamente quais as sessoes que sao responsaveis pelo maior numerode bloqueios (diretos ou indiretos), ou seja, quais sessoes que estao realmente"travando" o banco ? Visualmente pode ser ate facil, mas em uma longacadeia de bloqueios, esse processo pode ser muito trabalhoso se feito de formavisual. Um detalhe que pode ser muito util e perceber que a cadeia debloqueios, ou seja, a relacao entre as sessoes e suas bloqueadoras ehierarquica. Isso e uma excelente oportunidade para utilizar o recurso de CTEsrecursivas. Antes de propriamente prosseguir, e interessante que o aplicativoMB seja fechado e reaberto. Isso fara com que os processos 54, 55 e 63 queforam eliminados sejam considerados novamente.O uso das Common Table Expressions Recursivas(Recursive CTEs)Nao vou entrar nos detalhes das CTEs