No momento, estou revisando um caso em que um servidor SSRS está enfrentando bloqueios e impasses frequentes.
Os relatórios não são críticos para os negócios e são frequentemente eliminados para aliviar o bloqueio.
No entanto, este mesmo SQL Server possui alguns bancos de dados críticos (está compartilhando um servidor sql com um grande farm de sharepoint), que têm mostrado desempenho em declínio.
O plano do meu antecessor é o seguinte:
- Migre 4 TB de bancos de dados de A para B
- Migrar servidor de relatórios (originalmente A) de B para C
- Migrar servidor de relatórios (originalmente C) de C para B
O raciocínio é que teremos um hardware melhor (B), poderemos nos livrar de um servidor antigo (A) e remover o servidor de relatórios (termina em C) do servidor de banco de dados crítico (agora B).
No entanto, não estou totalmente convencido de que isso afetará muito o desempenho (exceto para o hardware mais recente).
Eu tenho monitorado os blocos por quase uma semana, e é consistentemente o WriteLockSession bloqueando um ReadChunkSegment. O que, pelo que posso dizer da documentação (google), está perfeitamente bem.
Como posso determinar isso/se um processo bloqueado está causando lentidão em um banco de dados diferente?
Se eu pudesse mostrar que os problemas de desempenho não estão relacionados (relatórios e outros bancos de dados) além do hardware compartilhado, gostaria de configurar conjuntos de dados compartilhados . Como a maioria dos relatórios e todos os relatórios de execução longa estão consultando o mesmo pequeno subconjunto de dados.
Uma solicitação que está sendo bloqueada não funciona. Aqui está um exemplo:
Criar uma consulta de bloqueio
Execute uma consulta que será bloqueada pela sessão acima
Agora observe qualquer "trabalho" que esta solicitação bloqueada possa estar fazendo (consulte
sys.dm_exec_requests
esta sessão bloqueada e aguarde algum tempo e consulte novamente para comparar/contrastar):O que você vê aqui é uma solicitação que não está funcionando, pois não está no
running
estado. Quando ésuspended
, não está em um processador fazendo nenhum trabalho.