Se o tempdb ficar sem espaço, as transações que precisam de espaço de armazenamento de versão falham ou aguardam a liberação de espaço?
relate perguntas
-
SQL Server - Como as páginas de dados são armazenadas ao usar um índice clusterizado
-
Preciso de índices separados para cada tipo de consulta ou um índice de várias colunas funcionará?
-
Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?
-
Quais são as principais causas de deadlocks e podem ser evitadas?
-
Como determinar se um Índice é necessário ou necessário
Uma transação pode ser revertida se o armazenamento de versão precisar de espaço e acabar. Ele não vai esperar por espaço na loja de versões e, na verdade, você não gostaria que ele esperasse.
Normalmente, o armazenamento de versão é usado por transações com níveis de isolamento que usam bloqueio otimista (isolamento de instantâneo ou isolamento de instantâneo confirmado por leitura, por exemplo). A intenção de usá-los geralmente é impedir que os leitores bloqueiem os gravadores em bancos de dados altamente transacionais, mas se um gravador tiver que aguardar a liberação do espaço de armazenamento de versão, isso poderá causar bloqueio extensivo de outros gravadores e poderá ficar bloqueado infinitamente. Em vez disso, essas transações são revertidas.
Os seguintes erros surgem da falta de espaço tempdb para o armazenamento de versão:
Conforme descrito na mensagem de erro, 3967 indica que o armazenamento de versão ficou sem espaço no tempdb e uma transação específica foi marcada como vítima. Esta transação será revertida se atingir o armazenamento de versão. Se a transação aberta não modificar nenhuma linha adicional, exigindo que as linhas sejam adicionadas ao armazenamento de versão, ela não será revertida.
3966 indica que uma transação marcada (de 3697) tentou acessar o armazenamento de versão e foi posteriormente revertida.
3959 indica que o tempdb não tem espaço suficiente para armazenar o armazenamento de versão, mas ainda não houve uma transação marcada como vítima (o que significa que o tempdb está sem espaço, mas nenhuma transação tentou acessar o armazenamento de versão). As transações existentes não seriam afetadas, mas as novas transações que precisam do armazenamento de versão seriam revertidas.