Supervisión del almacenamiento OLTP en memoria en Azure SQL Managed Instance

Se aplica a:Azure SQL Managed Instance

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

El nivel de servicio Crítico para la empresa incluye una cantidad determinada de memoria OLTP máxima en memoria, determinada por el número de núcleos virtuales.

La estimación de los requisitos de memoria para una tabla optimizada para memoria funciona de la misma manera para SQL Server que para Azure SQL Managed Instance. 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 fallar con el error 41823.

Corrección de las situaciones de almacenamiento de OLTP en memoria agotado: error 41823

Al alcanzar el límite de almacenamiento de OLTP en memoria de la base de datos, se produce el error 41823 en las operaciones de inserción, actualización, modificación y creación. Este error puede provocar que se anule la transacción activa.

El mensaje de error 41823 indica que las tablas optimizadas en memoria y las variables de tabla de la instancia 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 almacenamiento en memoria para agregar recuentos del núcleo virtual para los datos que necesita mantener en tablas optimizadas para memoria.

Nota:

En raras ocasiones, el error 41823 puede ser transitorio, 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 intentarlo cuando se produce por primera vez el error 41823. 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 Managed Instance 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;
    

    Para obtener más información, consulte Supervisión y solución de problemas de uso de memoria OLTP en memoria.