Síntomas
En Microsoft SQL Server 2016 o SQL Server 2017 en Windows, puede experimentar una disminución del rendimiento en las siguientes condiciones:
- Al ejecutar varias operaciones INSERTSELECT simultáneas en tablas temporales.
- Al consultar sys.dm_os_waiting_tasks. En esta situación, la columna resource_description muestra las esperas en las páginas de espacio libre de página (PFS) para varias solicitudes.
Causa
El paralelismo INSERT para las operaciones INSERTSELECT se introdujo en SQL Server 2016 o SQL Server 2017 en Windows. Las INSERTAR en tablas temporales locales (solo aquellas identificadas por el prefijo # y no las tablas temporales globales identificadas por los prefijos ##) ahora se habilitan automáticamente para el paralelismo sin tener que designar la sugerencia TABLOCK que requieren las tablas no temporales.
Aunque el paralelismo INSERT normalmente mejora el rendimiento de las consultas, si hay un número significativo de operaciones INSERTSELECT de tablas temporales simultáneas, la contención puede ser significativa en las páginas PFS. En algunos casos, esto puede provocar una disminución general del rendimiento.
Resolución
Este problema se corrige por primera vez en SQL Server 2016 Service Pack 1. Después de aplicar SQL Server 2016 SP1, inserte las aplicaciones INSERTAR en INSERTAR... La opción SELECCIONAR en tablas temporales locales está deshabilitada de forma predeterminada, lo que reduce la contención en la página PFS y mejora el rendimiento general para cargas de trabajo simultáneas. Si se quiere insertar en paralelo a tablas temporales locales, los usuarios deben usar la sugerencia TABLOCK mientras se insertan en tablas temporales locales.
Si ha habilitado la marca de seguimiento 9495 mencionada en la sección de solución alternativa, se recomienda deshabilitar y quitar la marca de seguimiento después de aplicar SQL Server 2016 SP1 como marca de seguimiento 9495 deshabilita la inserción paralela independientemente de la sugerencia TABLOCK.
Información sobre la actualización acumulativa
Este problema se corrigió en la siguiente actualización acumulativa para SQL Server 2016:
Acerca de las actualizaciones acumulativas para SQL Server