none
DEADLOCK RRS feed

  • Pergunta

  • Bom tarde Pessoal,

    Estou tendo deadlocks constante na instância, as querys são estas.

    SELECT count(*) as 
    FROM NAME_TABLE
    WHERE campo = @p0 
    and campo1 = @p1 
    and campo2 = @p2 
    and campo2 = @p3

    ----------------------------------

    INSERT INTO NAME_TABLE
    (campo1, 
     campo2
     campo3, 
     campo4,
           campo5,
              campo6,
     campo7,
     campo8,
     campo9,
     campo10,
     campo11,
     campo12
    VALUES (@p0, @p1, @p2, @p3, @p4, @p5, @p6, @p7, @p8, @p9, @p10, @p11, @p12)


    Ocorre cassos em que a query do SELECT bloqueia a ela mesma e em outras casos o INSERT bloqueia o SELECT.

    Eu sei que uma operação INSERT adquire uma bloqueio excluisivo, neste caso pode acontecer um deadlock, mas um SELECT não.


    Alguém pode me tirar está dúvida?


    Obrigado

    Fernando



    quinta-feira, 12 de fevereiro de 2015 18:06

Respostas

  • Boa Tarde Fernando,

    Existe uma certa confusão quanto ao entendimento dos bloqueios que a instrução Select pode gerar.

    As consultas utilizando Select geram bloqueios compartilhados nos registros que eles buscam e podem conflitar com bloqueios exclusivos que foram criados a partir de Update/Delete/Insert. Duas instruções com Select não irão gerar Deadlock, mas um Select pode gerar um Deadlock com um Update. Quando este Deadlock ocorre, o Select é geralmente a vítima , uma vez que não realizou nenhuma atualização, sendo assim, sempre vai ser contemplado no Deadlock.

    Leia o artigo abaixo para obter informações avançadas sobre o assunto:

    https://www.simple-talk.com/sql/performance/sql-server-deadlocks-by-example/



    Att, Bruno Silva.

    • Sugerido como Resposta Mariana Del Nero quinta-feira, 12 de fevereiro de 2015 19:33
    quinta-feira, 12 de fevereiro de 2015 18:49