Depois de ler o Guia de desempenho de carregamento de dados , ainda não tenho certeza se é necessário adicionar a dica de tabela TABLOCK a uma tabela temporária vazia, definida com um índice clusterizado, para obter um registro mínimo.
Obviamente, a tabela temporária é criada no TempDB, que opera no modo de recuperação SIMPLE, então eu pensei que era um candidato perfeito para log mínimo; no entanto, não consigo encontrar uma passagem para confirmá-lo.
Uma tabela temporária é candidata para registro mínimo e, em caso afirmativo, vale a pena adicionar a dica TABLOCK conforme recomendado para tabelas permanentes?
Não. As tabelas temporárias locais (
#temp
) são privadas para a sessão de criação, portanto, uma dica de bloqueio de tabela não é necessária. Uma dica de bloqueio de tabela seria necessária para uma tabela temporária global (##temp
) ou uma tabela regular (dbo.temp
) criada emtempdb
, porque elas podem ser acessadas de várias sessões.Observe que, mesmo quando as otimizações mínimas de log não são aplicadas, as tabelas criadas
tempdb
se beneficiam de outras otimizações, como não precisar registrarREDO
informações. Você pode testar para ver se as linhas ou páginas estão sendo registradas usando o undocumentedsys.fn_dblog
. O registro regular apresentará registros registrados em linha, comoLOP_INSERT_ROWS
.Observe que adicionar
TABLOCK
a uma tabela temporária local é necessário para obter execução paralela comINSERT...SELECT
consultas no SQL Server 2016, consulte o artigo da Base de Conhecimento da Microsoft:Baixo desempenho ao executar operações INSERT.. SELECT no SQL Server 2016