Compartir a través de


Supervisión del almacenamiento OLTP en memoria en base de datos de Azure SQL

Se aplica a: Azure SQL Database

Con OLTP en memoria, los datos de las tablas optimizadas para memoria y las variables de tabla residen en el almacenamiento de OLTP en memoria, que es una parte de la memoria de la base de datos que se reserva para los datos en memoria.

Determinación de si los datos se ajustan al límite de almacenamiento de OLTP en memoria

Determine los límites de almacenamiento de los diferentes objetivos de servicio. Cada objetivo de servicio Premium y Crítico para la empresa tiene un tamaño máximo de almacenamiento de OLTP en memoria.

La estimación de los requisitos de memoria para una tabla optimizada para memoria funciona de la misma manera para SQL Server tal y como se hace en la base de datos de Azure SQL. Revise Cómo calcular los requisitos de memoria.

La tabla y las filas de variables de tabla, así como los índices, se tienen en cuenta para el límite. Además, las instrucciones ALTER TABLE necesitan suficiente memoria para crear una nueva versión de toda la tabla y sus índices.

Una vez que se alcanza ese límite, las operaciones de inserción y actualización pueden empezar a producir errores. En ese momento, es necesario eliminar los datos para reclamar memoria o escalar verticalmente el objetivo de servicio de la base de datos o el grupo elástico. Para obtener más información, consulte Corrección de las situaciones de almacenamiento de OLTP en memoria agotado: errores 41823 y 41840.

Supervisar y alertar

Puede supervisar el uso del almacenamiento de OLTP en memoria como un porcentaje del límite de almacenamiento para el objetivo de servicio en Azure Portal:

  1. En la página Información general de SQL Database, seleccione el gráfico de la página Supervisión. O bien, en el menú de navegación, busque Supervisión y seleccione Métricas.
  2. Seleccione Agregar métrica.
  3. En Básico, seleccione la métrica Porcentaje de almacenamiento OLTP en memoria.
  4. Para agregar una alerta, seleccione el cuadro Uso de recursos para abrir la página Métrica y, a continuación, seleccione Nueva regla de alertas. Siga las instrucciones para crear una regla de alerta de métrica.

O bien, use la siguiente consulta para mostrar el uso del almacenamiento en memoria:

SELECT xtp_storage_percent 
FROM sys.dm_db_resource_stats
ORDER BY end_time DESC;

Resolución de errores de memoria insuficiente con OLTP en memoria

Alcanzar el límite de almacenamiento de OLTP en memoria en la base de datos o el grupo elástico podría producir el error 41823 en las instrucciones INSERT, UPDATE, ALTER y CREATE (para bases de datos únicas) o el error 41840 (para grupos elásticos). Ambos errores anulan la transacción activa.

Los errores 41823 y 41840 indican que el tamaño de las tablas optimizadas para memoria y las variables de tabla de la base de datos o el grupo elástico ha alcanzado el tamaño máximo de almacenamiento de OLTP en memoria.

Para resolver estos errores:

  • Elimine datos de las tablas optimizadas para memoria, lo que potencialmente descarga los datos a tablas tradicionales, basadas en disco; o bien,
  • Actualice el objetivo de servicio a uno con suficiente espacio de almacenamiento de OLTP en memoria para los datos que necesita mantener en tablas optimizadas para memoria y variables de tabla.

Nota:

En raras ocasiones, los errores 41823 y 41840 pueden ser transitorios, lo que significa que hay suficiente espacio de OLTP disponible en memoria y la operación se realiza de nuevo correctamente. Por lo tanto, se recomienda supervisar el almacenamiento de OLTP en memoria global disponible y volver a intentar cuando primero cuando se produce el error 41823 o 41840. Para más información acerca de la lógica de reintento, consulte Detección de conflictos y lógica de reintento de OLTP en memoria.

Supervisar con DMV

  • Al supervisar el consumo de memoria de forma proactiva, puede determinar cómo aumenta el consumo de memoria y cuánta capacidad de aumento queda hasta los límites de recursos. Identificar la cantidad de memoria utilizada por los objetos de la base de datos o de la instancia. Puede usar las DMV sys.dm_db_xtp_table_memory_stats o sys.dm_os_memory_clerks.

    • Puede encontrar el consumo de memoria de todas las tablas de usuario, los índices y los objetos del sistema consultando sys.dm_db_xtp_table_memory_stats:

      SELECT object_name(object_id) AS [Name], *
      FROM sys.dm_db_xtp_table_memory_stats;
      
    • La memoria asignada al motor de OLTP en memoria y a los objetos optimizados para memoria se administra de la misma forma que el resto de consumidores de memoria dentro de una base de datos. Los distribuidores de memoria de tipo MEMORYCLERK_XTP tienen en cuenta toda la memoria asignada al motor de OLTP en memoria. Use la consulta siguiente para buscar toda la memoria usada por el motor de OLTP en memoria, incluida la memoria dedicada a bases de datos específicas.

      -- This DMV accounts for all memory used by the In-Memory OLTP engine
      SELECT [type], [name]
           , memory_node_id  
           , pages_kb/1024. AS pages_MB
      FROM sys.dm_os_memory_clerks 
      WHERE [type] LIKE '%xtp%';
      
      type                 name       memory_node_id pages_MB  
      -------------------- ---------- -------------- --------------------  
      MEMORYCLERK_XTP      Default    0              18  
      MEMORYCLERK_XTP      DB_ID_5    0              1358  
      MEMORYCLERK_XTP      Default    64             0  
      
  • También puede obtener más información sobre los errores de memoria insuficiente en Azure SQL Database con la vista de administración dinámica sys.dm_os_out_of_memory_events. Por ejemplo:

    SELECT *
    FROM sys.dm_os_out_of_memory_events
    ORDER BY event_time DESC;