Can Sql Server 2008 Stored Procedures (ou Triggers) paralelo ou o fundo manualmente alguma lógica?
-
22-07-2019 - |
Pergunta
Se eu tiver um procedimento armazenado ou um disparador no SQL Server 2008, pode fazer alguns cálculos SQL 'em outro segmento non-blocking'? ie. algo no fundo
Além disso, podem dois blocos de código SQL ser executado em paralelo? ou dois procedimentos armazenados ser executado em paralelo?
por exemplo. Imagine que nos é dado o trabalho cálculo das pontuações para cada usuário Stack Overflow (e por favor deixe tudo 'fazer isso elsehwere / serviço / batch / noite / etc, elswhere) depois que um usuário faz alguma 'ação'.
por isso temos um disparo na tabela Post, por isso, quando um novo post for inserido, os fogos desencadear e parte dessa lógica, ele calcula mais recente pontuação do usuário. Em vez de esperar para o proc armazenado ao fim e bloquear a corrente thread de SQL / executire, podemos pedir-lhe para calc o placar em segundo plano ou paralela.
aplausos!
Solução
SQL Server não tem execução paralela ou diferida:. Cada bloco de execução de código em uma conexão é serial, uma linha após o outro
Para o processamento dissociar, você geralmente tem que usar trabalhos do SQL Server Agent ou o uso Serviço corretor . Estes iniciar a execução de uma nova conexão, nova sessão etc
Isso faz sentido:
- E se você quiser reverter as alterações? O que a discussão de fundo fazer e como ele sabe?
- Quais são os dados que ele usa? Novo, Antigo, espera de bloqueio, instantâneo?
- O que se ele fica à frente da linha principal e usos obsoleto dados?
Outras dicas
Não, mas você pode escrever o pedido para uma fila. Service Broker, um componente SQL Server, oferece suporte para esse tipo de coisa. É provavelmente a melhor opção disponível para o processamento assíncrono.