Obtenga un registro mínimo al cargar datos en tablas temporales

10

Incluso después de leer la Guía de rendimiento de carga de datos , todavía no estoy seguro de si es necesario agregar la sugerencia de tabla TABLOCK a una tabla temporal vacía, definida con un índice agrupado para obtener un registro mínimo.

Obviamente, la tabla temporal se crea en TempDB que funciona en el modo de recuperación SIMPLE, por lo que habría pensado que era un candidato perfecto para un registro mínimo, sin embargo, no puedo encontrar un pasaje para confirmarlo.

¿Es una tabla temporal candidata para un registro mínimo, y si es así, vale la pena agregar la sugerencia TABLOCK como se recomienda para las tablas permanentes?

Pixelado
fuente

Respuestas:

18

No estoy seguro de si es necesario agregar la TABLOCKsugerencia de tabla a una tabla temporal vacía, definida con un índice agrupado para obtener un registro mínimo.

No. Las tablas temporales locales ( #temp) son privadas para la sesión de creación, por lo que no se requiere una sugerencia de bloqueo de tabla. Se necesitaría una sugerencia de bloqueo de tabla para una tabla temporal global ( ##temp) o una tabla regular ( dbo.temp) creada en tempdb, porque se puede acceder a ellas desde múltiples sesiones.

Tenga en cuenta que incluso cuando no se aplican las optimizaciones de registro mínimas completas, las tablas creadas se tempdbbenefician de otras optimizaciones, como no necesitar registrar REDOinformación. Puede probar para ver si las filas o las páginas se están registrando con los indocumentados sys.fn_dblog. El registro regular contará con registros registrados como filas LOP_INSERT_ROWS.


Tenga en cuenta que TABLOCKse requiere agregar a una tabla temporal local para obtener una ejecución paralela con INSERT...SELECTconsultas en SQL Server 2016, consulte el artículo de Microsoft Knowledge Base:

Bajo rendimiento cuando ejecuta INSERT .. SELECCIONE operaciones en SQL Server 2016

Paul White 9
fuente