Compartir vía


Rendimiento de las tablas temporales con control de versiones del sistema optimizadas para memoria

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

En este artículo se describen algunas consideraciones de rendimiento concretas cuando se utilizan tablas temporales con control de versiones del sistema optimizadas para memoria.

Al agregar control de versiones del sistema a una tabla no temporal existente, espere un impacto en el rendimiento de las operaciones de actualización y eliminación, porque la tabla de historial se actualiza automáticamente.

Consideraciones sobre el rendimiento

Cada actualización y eliminación se registra en una tabla de historial interna optimizada para memoria. Es posible que experimente un consumo de memoria inesperado si la carga de trabajo usa esas dos operaciones masivamente. Por tanto, se recomiendan las consideraciones siguientes:

  • No realice eliminaciones masivas de la tabla actual en un paso. Considere la posibilidad de eliminar los datos en varios lotes con el vaciado de los datos invocado de forma manual, con 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. Este consumo doble de memoria es temporal, porque la tarea de vaciado de datos trabaja regularmente para mantener el consumo de memoria de las tablas de almacenamiento provisional internas dentro de los límites proyectados en el estado estable. El límite es 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 periodo de activación de la tarea de vaciado de datos no es configurable, pero puede ejecutar sp_xtp_flush_temporal_history de forma manual cuando sea necesario.

Considere la posibilidad de usar el almacén de columnas agrupado como opción de almacenamiento para una tabla de historial basada 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, un índice de almacén de columnas agrupado es una opción óptima para la tabla de historial. Los índices de almacén de columnas agrupados proporcionan una buena compresión de datos y se comportan de forma fácil de insertar, en consonancia con la forma en que se generan los datos del historial.