Condividi tramite


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

Si applica a: Istanza gestita di SQL di Azure SQL

Con OLTP in memoria, i dati nelle tabelle ottimizzate per la memoria e le 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 in SQL Server è analoga alla stima eseguita nell’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. ALTER TABLE, inoltre, necessita di spazio sufficiente per creare una nuova versione dell'intera tabella e dei relativi indici.

Dopo il superamento di questo limite, è possibile che le operazioni di inserimento e aggiornamento abbiano esito negativo con errore 41823.

Correggere situazioni di archiviazione OLTP non in memoria - errore 41823

Se si raggiunge il limite di archiviazione OLTP in memoria nel database, le operazioni INSERT, UPDATE, ALTER e CREATE hanno esito negativo con l’errore 41823. Questo errore può causare l'interruzione della transazione attiva.

L’errore 41823 indica che le tabelle e le variabili di tabella dell’istanza per la memoria hanno raggiunto la dimensione massima 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 il conteggio vCore per aggiungere l’archiviazione in memoria per i dati da mantenere nelle tabelle ottimizzate per la memoria.

Nota

In rari casi, l’errore 41823 può essere temporaneo, con il risultato che lo spazio di archiviazione OLTP in memoria si rivela sufficiente ed è possibile eseguire nuovamente l'operazione con esito positivo. Pertanto, quando si verifica l'errore 41823 per la prima volta, è consigliabile monitorare lo spazio complessivo di archiviazione OLTP in memoria e provare a eseguire nuovamente l'operazione. Per altre informazioni sulla logica di ripetizione dei tentativi, vedere Rilevamento dei conflitti e logica di ripetizione 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.

    • Per conoscere l'utilizzo della memoria da parte di tutte le tabelle utente, gli indici e gli oggetti di sistema, eseguire 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 agli oggetti ottimizzati per la memoria viene gestita in modo analogo a qualsiasi altro consumer di memoria all'interno del database. I clerk di memoria di tipo MEMORYCLERK_XTP tengono conto di 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.