Recursos para entender o bloqueio e a simultaneidade do SQL Server?

8

Como demonstrado por uma pergunta recente sobre bloqueio e concorrência de minas, é DURO.

Você pode sugerir bons recursos para os profissionais de SQL intermediários a avançados fazerem um estudo completo sobre eles que, devidamente aprendidos, possibilitariam uma melhor navegação de todas as armadilhas inerentes nessa área?

Estou pensando em todos os tipos de recursos - tutoriais, blogs, páginas de manual, sessões do PASS ou qualquer coisa.

ErikE
fonte

Respostas:

7

O melhor livro sobre o assunto e o recurso mais completo é o SQL Server 2008 Internals de Kalen Delaney. Você realmente não pode fazer melhor. Outro bom livro sobre o assunto é o SQL Server 2008 Internals and Troubleshooting da Chris Bolton. Eu não acho que seja tão completo quanto o livro de Kalen, mas cobre as coisas muito bem, especialmente em termos de bloqueio e concorrência.

Grant Fritchey
fonte
Devo concordar com a sugestão de Grant - SQL Server 2008 Internals de Kalen Delaney é um recurso IMPRESSIONANTE! Ele fica na minha mesa o tempo todo.
11763 OliverAsmus
7

Embora os livros específicos de produtos façam um ótimo trabalho ao explicar como usar os produtos (e a série de Kalen Delaney é incrível!), Eles realmente não têm chance contra o 'livro preto' e o 'livro vermelho' dos sistemas de banco de dados. Especialmente o livro preto (o primeiro link) é praticamente uma leitura obrigatória se você quiser entender esses conceitos. O livro vermelho é uma coleção de trabalhos de pesquisa, muitos disponíveis online. Eu mantenho uma página com links para alguns deles . O terceiro livro vinculado é basicamente uma reescrita mais atualizada do 'livro preto' (também mais barato e disponível no Kindle ...)

Existem também vários bons blogs, eu recomendaria em primeiro lugar o blog CSS do SQL Server .

Remus Rusanu
fonte
5

Bloqueio e simultaneidade é um tópico sobre o qual aprendi mais através de testes e observações.

Comece lendo Níveis de isolamento no Mecanismo de Banco de Dados e Efeitos de Concorrência , para entender o relacionamento entre os dois. Agora você pode experimentar:

  • Construa o SQL para uma transação de teste. Algo simples e independente com um contexto / domínio que você entende, por exemplo, checkout do carrinho de compras ou transferência bancária. Verifique se você tem um método para verificar se os dados estão no estado esperado após o teste.
  • Execute seu cenário, observando o tipo, duração e sequência de bloqueios aplicados pelo mecanismo de banco de dados.
  • Altere o nível de isolamento ou aplique dicas e observe as alterações nos bloqueios realizados.
  • Quando você achar que possui uma transação que sobreviverá à simultaneidade , carregue-a.

Costumo verificar seqüências de bloqueio com o sinalizador de rastreamento 1200 ou um rastreamento do Profiler . Acredito que eventos estendidos também possam ser usados, mas ainda não tentei.

Mark Storey-Smith
fonte