Supervisión del almacenamiento OLTP en memoria en Azure SQL Database

Se aplica a:Azure SQL Database

Cuando se usa OLTP en memoria, los datos de tablas optimizadas para memoria y las variables de tabla residen en el almacenamiento OLTP en memoria.

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

Determine los extremos de almacenamiento de los diferentes niveles de servicio. Cada nivel de servicio Premium y Crítico para la empresa tiene un tamaño máximo de almacenamiento 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. Dedique unos minutos a revisar Estimar los requisitos de memoria.

La tabla y las filas de variables de tabla, así como los índices, se tienen en cuenta para el tamaño máximo de los datos de usuario. Además, ALTER TABLE necesita suficiente espacio para crear una nueva versión de toda la tabla y sus índices.

Una vez que se supera 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 actualizar el nivel de servicio o el tamaño de proceso de la base de datos. Para obtener más información, consulte Corrección de las situaciones de almacenamiento de OLTP en memoria agotado: errores 41823 y 41840.

Supervisión y alertas

Puede supervisar el uso del almacenamiento en memoria como un porcentaje del límite de almacenamiento para su tamaño de proceso 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;

Corrección de las situaciones de almacenamiento de OLTP en memoria agotado: errores 41823 y 41840

Al alcanzar el límite de almacenamiento de OLTP en memoria de la base de datos, se producen el error 41823 (para bases de datos únicas) y el error 41840 (para grupos elásticos) en las operaciones de inserción, actualización, modificación y creación. Ambos errores anulan la transacción activa.

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

Para resolver este error, haga uno de los siguientes:

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

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 obtener 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 periódicamente, puede determinar cómo aumenta el consumo de memoria y cuánto espacio principal ha dejado en los límites de recursos. Identificar la cantidad de memoria utilizada por los objetos de la base de datos o de la instancia. Por ejemplo, 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 cualquier otro consumidor 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 en sys.dm_os_memory_clerks para buscar toda la memoria usada por el motor OLTP en memoria, incluida la memoria dedicada a bases de datos específicas.

      -- This DMV accounts for all memory used by the in-memory 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;