- O que é hot spotting?
Aaron está correto e não vou repetir o que ele disse acima, no entanto, não se trata apenas de E / S de disco. A parte principal com a qual a maioria das pessoas tem problemas no TempDB é devido à contenção em determinadas estruturas de rastreamento.
Como ter vários arquivos tempdb permite que os algoritmos de preenchimento proporcional e round robin sejam efetivamente "justos" nas alocações, a adição de um novo arquivo sem alocações pode desencadear um pouco isso. Eu discordo que é um aviso "galinha pequena" (consulte as atualizações do produto abaixo) se você começar a ver as PAGELATCH_*
esperas no novo arquivo e não em muitos ou nenhum em outros arquivos. Isso geralmente acontece em sistemas com alta atividade TempDB e já com mais de um único arquivo.
Observe que existem opções no SQL Server 2019 para alterar algumas das tabelas subjacentes do sistema para tabelas na memória, o que pode melhorar, pois os objetos na memória são alocados de maneira diferente das tabelas armazenadas em disco. As tabelas baseadas em disco são as tabelas tradicionais com as quais todos trabalhamos ao longo dos anos. O SQL Server 2014 introduziu tabelas com otimização de memória . O SQL Server 2019 pode manipular alguns metadados de alocação em tabelas com otimização de memória.
Outra alteração foi feita no SQL Server 2019 para ajudar nas alterações simultâneas do PFS, que geralmente é o que a disputa pela estrutura na memória na alocação está PAGELATCH_*
aguardando.
- E o hot spotting torna as coisas muito piores no tempdb?
Nada IMHO. Sim, o TempDB possui mais itens que podem causar gravações nele sem serem usados diretamente, o que dificulta alguns itens. No entanto, um banco de dados de usuários muito ocupado em termos de taxa de alteração de dados também é ruim. Não se limita apenas ao TempDB.
- Que coisas específicas no banco de dados ficariam muito piores?
Eu realmente gosto da analogia de Aaron! Essa é a essência do que está acontecendo. O que realmente piora é a alocação e rastreamento de espaço para objetos no banco de dados. Se o banco de dados do usuário for principalmente estático (baixa taxa de alteração) ou o TempDB não estiver sendo realmente usado, você não notará nada. Se, no entanto, for um servidor bastante ocupado, você poderá iniciar ou agravar as esperas de pagelatch, o que pode levar ao bloqueio de comboios.
Aaron já apontou que, na versão mais antiga, existem sinalizadores de rastreamento para garantir que extensões uniformes sejam usadas e que todos os arquivos em um grupo de arquivos cresçam juntos (Aaron aponta 1117 e 1118, que são NOPs em 2016+). A outra coisa que eu gostaria de salientar novamente é que isso não é apenas para o TempDB, mas para qualquer banco de dados, e o layout físico deve ser pensado dependendo das necessidades.
Isso não é apenas para problemas de hotspotting, mas é aplicável a outras partes do sistema, como backup / restauração, gerenciamento de arquivos, fragmentação de metadados do sistema de arquivos, etc., que podem ser ajudados por vários arquivos.
Você pode ver a contenção da estrutura de alocação procurando uma waitresource
em uma página do PFS (que é a página 1 e, em seguida, a cada 8088 páginas). Se você vir tudo no mesmo arquivo (2: arquivo: página), saberá que isso está ocorrendo.