Monitorare l'archiviazione OLTP in memoria in database SQL di Azure
Si applica a:database SQL di Azure
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
Determinare i limiti di archiviazione dei diversi livelli di servizio. Ogni livello di servizio Premium e Business Critical ha una dimensione massima di archiviazione OLTP in memoria.
- Limiti delle risorse basate su DTU - Database singolo
- Limiti delle risorse basate su DTU - Pool elastici
- Limiti delle risorse basate su vCore - database singoli
- Limiti delle risorse basate su vCore - pool elastici
La stima dei requisiti di memoria per una tabella ottimizzata per la memoria in SQL Server è analoga alla stima eseguita nel database 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. A questo punto è necessario eliminare dati per recuperare memoria oppure aggiornare il livello di servizio o le dimensioni di calcolo del database. Per altre informazioni, vedere Correggere le situazioni di archiviazione OLTP in memoria insufficiente - Errori 41823 e 41840.
Monitoraggio e avvisi
È possibile monitorare l'uso dell'archiviazione in memoria come percentuale del limite di archiviazione per le dimensioni di calcolo nell'portale di Azure:
- Nella pagina Panoramica del database SQL selezionare il grafico nella pagina Monitoraggio. In alternativa, nel menu di spostamento individuare Monitoraggio e selezionare Metriche.
- Selezionare Aggiungi metrica.
- In Basic selezionare la metrica OLTP in memoria Archiviazione percentuale.
- Per aggiungere un avviso, selezionare nella casella Utilizzo risorse per aprire la pagina Metrica e quindi selezionare Nuova regola di avviso. Seguire le istruzioni per creare una regola di avviso per le metriche.
In alternativa, usare la query seguente per visualizzare l'utilizzo dell'archiviazione in memoria:
SELECT xtp_storage_percent FROM sys.dm_db_resource_stats;
Correggere le situazioni di archiviazione OLTP in memoria insufficiente - Errori 41823 e 41840
Soddisfare il limite di archiviazione OLTP in memoria nel database genera operazioni IN edizione Standard RT, UPDATE, ALTER e CREATE con errore 41823 (per database singoli) o errore 41840 (per i pool elastici). Entrambi gli errori comportano l'interruzione della transazione attiva.
Gli errori 41823 e 41840 indicano che le tabelle e le variabili di tabella ottimizzate per la memoria nel database o nel pool 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 livello di servizio selezionandone uno con risorse di archiviazione in memoria sufficienti per i dati da mantenere nelle tabelle ottimizzate per la memoria.
Nota
In rari casi, gli errori 41823 e 41840 possono essere temporanei, il che significa che è disponibile spazio di archiviazione OLTP in memoria sufficiente e ripetere l'operazione ha esito positivo. È pertanto consigliabile monitorare l'archiviazione OLTP disponibile in memoria complessiva e riprovare quando si verifica l'errore 41823 o 41840. 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 database 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;
Contenuto correlato
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per