Rendimiento de las tablas temporales con control de versiones del sistema con optimización para memoria

Se aplica a: SQL Server 2016 (13.x) y versiones posteriores Azure SQL DatabaseAzure SQL Managed Instance

En este tema se describen algunos aspectos a tener en cuenta sobre el rendimiento cuando se utilizan tablas temporales con control de versiones optimizadas para memoria.

  • Al agregar control de versiones del sistema a una tabla no temporal existente, el rendimiento esperado se puede ver afectado por las operaciones de actualización y eliminación porque la tabla de historial se actualiza automáticamente.

  • Cada actualización y eliminación se registra en una tabla de historial interna optimizada para memoria, por lo que puede experimentar un consumo de memoria inesperado si su carga de trabajo usa esas dos operaciones de forma masiva. Por lo tanto, recomendamos lo siguiente:

    • No libre espacio para aumentar la memoria RAM disponible cuando realice eliminaciones masivas de la tabla actual. Considere la posibilidad de eliminar los datos en varios lotes con el vaciado manual de los datos invocados entre uno y otro invocando sp_xtp_flush_temporal_history, o mientras SYSTEM_VERSIONING = OFF.
    • No realice actualizaciones masivas de tablas de una vez, ya que puede dar lugar a un consumo de memoria equivalente a dos veces la cantidad necesaria para actualizar una tabla optimizada para memoria no temporal. El consumo doble de memoria es temporal porque la tarea de vaciado de datos trabaja regularmente para mantener el consumo de memoria de la tabla de almacenamiento provisional externa dentro de los límites proyectados en el estado estable (aproximadamente el 10 % del consumo de memoria de la tabla temporal actual). Considere la posibilidad de realizar actualizaciones masivas en varios lotes o mientras SYSTEM_VERSIONING = OFF; por ejemplo, usar actualizaciones para establecer los valores predeterminados para las columnas recién agregadas.
  • El período de activación de la tarea de vaciado de datos no es configurable, pero puede aplicar el proceso invocando sp_xtp_flush_temporal_history.

  • Considere la posibilidad de usar el almacén de columnas en clúster como opción de almacenamiento para tablas de historial basadas en disco, en especial si tiene pensado ejecutar solicitudes de análisis sobre datos históricos que utilizan funciones de agregación o de división de particiones. En ese caso, el almacén de columnas en clúster será una buena opción para las tablas de historial dado que proporciona una buena compresión de los datos y un comportamiento que "facilita las inserciones", lo que coincide con el modo en que se generan los datos de historial.

Consulte también