Monitorare l'archiviazione OLTP in memoria in Istanza gestita di SQL di Azure

Si applica a:Azure SQL Managed Instance

Con OLTP in memoria, i dati nelle tabelle ottimizzate per la memoria e nelle variabili di tabella si trovano nell'archiviazione OLTP in memoria.

Determinare se i dati rientrano nel limite di archiviazione OLTP in memoria

Il livello di servizio Business Critical include una determinata quantità di memoria OLTP in memoria massima, determinata dal numero di vCore.

La stima dei requisiti di memoria per una tabella ottimizzata per la memoria funziona allo stesso modo per SQL Server come in Istanza gestita di SQL di Azure. Esaminare Stimare i requisiti di memoria.

Le righe di tabella, le righe di variabile di tabella e gli indici vengono inclusi nel calcolo delle dimensioni massime dei dati utente. Inoltre, ALTER TABLE ha bisogno di spazio sufficiente per creare una nuova versione dell'intera tabella e dei relativi indici.

Una volta superato questo limite, le operazioni di inserimento e aggiornamento potrebbero non riuscire con errore 41823.

Correggere le situazioni di archiviazione OLTP in memoria insufficiente - Errore 41823

Per soddisfare il limite di archiviazione OLTP in memoria nel database, si ottengono operazioni IN edizione Standard RT, UPDATE, ALTER e CREATE con errore 41823. Questo errore può causare l'interruzione della transazione attiva.

L'errore 41823 indica che le tabelle e le variabili di tabella ottimizzate per la memoria nell'istanza hanno raggiunto le dimensioni massime di archiviazione OLTP in memoria.

Per risolvere l'errore:

  • Eliminare i dati dalle tabelle ottimizzate per la memoria, eseguendo potenzialmente l'offload dei dati in tabelle tradizionali basate su disco oppure
  • Aggiornare l'archiviazione in memoria del numero di vCore per i dati che è necessario mantenere nelle tabelle ottimizzate per la memoria.

Nota

In rari casi, l'errore 41823 può essere temporaneo, ovvero è disponibile spazio di archiviazione OLTP in memoria sufficiente e riprovare a eseguire l'operazione. È quindi consigliabile monitorare l'archiviazione OLTP disponibile in memoria complessiva e riprovare quando si verifica l'errore 41823. Per altre informazioni sulla logica di ripetizione dei tentativi, vedere Rilevamento dei conflitti e Logica di ripetizione dei tentativi con OLTP in memoria.

Monitorare con DMV

  • Monitorando periodicamente l'utilizzo della memoria, è possibile determinare la crescita del consumo di memoria e la quantità di spazio head lasciato nei limiti delle risorse. Identificare la quantità di memoria utilizzata dagli oggetti nel database o nell'istanza. Ad esempio, le DMV sys.dm_db_xtp_table_memory_stats o sys.dm_os_memory_clerks.

    • È possibile trovare l'utilizzo della memoria per tutte le tabelle utente, gli indici e gli oggetti di sistema eseguendo una query su sys.dm_db_xtp_table_memory_stats:

      SELECT object_name(object_id) AS [Name], *  
         FROM sys.dm_db_xtp_table_memory_stats;
      
    • La memoria allocata al motore OLTP in memoria e gli oggetti ottimizzati per la memoria vengono gestiti allo stesso modo di qualsiasi altro consumer di memoria all'interno di un database. I clek di memoria di tipo MEMORYCLERK_XTP account per tutta la memoria allocata al motore OLTP in memoria. Usare la query seguente su sys.dm_os_memory_clerks per trovare tutta la memoria usata dal motore OLTP in memoria, inclusa la memoria dedicata a database specifici.

      -- 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  
      
    
    
  • È anche possibile ottenere altre informazioni sugli errori di memoria insufficiente in Istanza gestita di SQL di Azure con la visualizzazione a gestione dinamica sys.dm_os_out_of_memory_events. Ad esempio:

    SELECT * FROM sys.dm_os_out_of_memory_events ORDER BY event_time DESC;
    

    Per altre informazioni, vedere Monitorare e risolvere i problemi relativi all'utilizzo della memoria OLTP in memoria.