SQL SERVER (SP_WHO2) - Entenda a diferença entre status, pendente, executável, suspenso, suspenso.
Uma das perguntas mais populares que recebo durante o dia-a-dia no cotidiano, principalmente dos desenvolvedores é, qual a diferença entre os status em sp_who2. Hoje vamos entendê-los e detalhar no que diz respeito à CPU e I/O.
Primeiro, vamos ver a definição:
Em Execução (Running) - A sessão com este status está realmente executando os batches e consumindo os ciclos da CPU.
Runnable - A sessão com este status é, na verdade, atribuída a um thread, mas espera que o ciclo da CPU esteja disponível.
Pendente (Pending) - A sessão com este status ainda não foi atribuída a um threads e está aguardando a disponibilidade dos threads.
Suspenso (Suspended) - A sessão com esse status geralmente está aguardando a disponibilidade dos recursos. Eu já vi isso com mais conclusão de operação de E / S sobre problemas de CPU.
Dormir (Sleeping) - A sessão com esse status não está realmente fazendo nada. Muitas vezes vejo esse status quando todas as tarefas relacionadas aos threads são concluídas, mas a conexão ainda está aberta. (Você pode abrir uma nova conexão no SQL Server Management Studio e não executar nada lá. Em seguida, verifique o status do SPID e você notará que o status está em Suspensão). Então, desta vez, quando você executar sp_who2, você saberá rapidamente o que cada thread significa.
Então, da próxima vez, quando executar sp_who2, saberá rapidamente o que cada thread significa.