Monitorare l'archiviazione OLTP in memoriaMonitor In-Memory OLTP storage

Quando si usa OLTP in memoria, i dati nelle tabelle ottimizzate per la memoria e le variabili di tabella si trovano nell'archiviazione OLTP in memoria.When using In-Memory OLTP, data in memory-optimized tables and table variables resides in In-Memory OLTP storage. Ogni livello di servizio Premium e Business Critical ha dimensioni massime di archiviazione OLTP in memoria.Each Premium and Business Critical service tier has a maximum In-Memory OLTP storage size. Vedere Limiti delle risorse basate su DTU - database singolo, Limiti delle risorse basate su DTU - pool elastici,Limiti delle risorse basate su vCore - database singoli e Limiti delle risorse basate su vCore - pool elastici.See DTU-based resource limits - single database, DTU-based resource limits - elastic pools,vCore-based resource limits - single databases and vCore-based resource limits - elastic pools.

Dopo il superamento di questo limite, è possibile che le operazioni di inserimento e aggiornamento abbiano esito negativo con errore 41823 per i database autonomi ed errore 41840 per i pool elastici.Once this limit is exceeded, insert and update operations may start failing with error 41823 for standalone databases and error 41840 for elastic pools. A questo punto è necessario eliminare dati per recuperare memoria oppure aggiornare il livello di prestazioni del database.At that point you need to either delete data to reclaim memory, or upgrade the performance tier of your database.

Determinare se i dati rientrano nel limite di archiviazione OLTP in memoriaDetermine whether data fits within the In-Memory OLTP storage cap

Determinare i limiti di archiviazione dei diversi livelli di servizio.Determine the storage caps of the different service tiers. Vedere Limiti delle risorse basate su DTU - database singolo, Limiti delle risorse basate su DTU - pool elastici,Limiti delle risorse basate su vCore - database singoli e Limiti delle risorse basate su vCore - pool elastici.See DTU-based resource limits - single database, DTU-based resource limits - elastic pools,vCore-based resource limits - single databases and vCore-based resource limits - elastic pools.

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.Estimating memory requirements for a memory-optimized table works the same way for SQL Server as it does in Azure SQL Database. È consigliabile rivedere l'articolo corrispondente in MSDN.Take a few minutes to review that article on MSDN.

Le righe di tabella, le righe di variabile di tabella e gli indici vengono inclusi nel calcolo delle dimensioni massime dei dati utente.Table and table variable rows, as well as indexes, count toward the max user data size. ALTER TABLE, inoltre, necessita di spazio sufficiente per creare una nuova versione dell'intera tabella e dei relativi indici.In addition, ALTER TABLE needs enough room to create a new version of the entire table and its indexes.

Monitoraggio e avvisoMonitoring and alerting

È possibile monitorare l'uso dell'archiviazione in memoria come percentuale del limite di archiviazione per il livello di prestazioni nel portale di Azure:You can monitor In-memory storage use as a percentage of the storage cap for your performance tier in the Azure portal:

  1. Nel pannello Database individuare la casella Utilizzo risorse e fare clic su Modifica.On the Database blade, locate the Resource utilization box and click on Edit.
  2. Selezionare la metrica In-Memory OLTP Storage percentage.Select the metric In-Memory OLTP Storage percentage.
  3. Per aggiungere un avviso, selezionare la casella Utilizzo risorse per aprire il pannello Metrica, quindi fare clic su Aggiungi avviso.To add an alert, click on the Resource Utilization box to open the Metric blade, then click on Add alert.

In alternativa, usare la query seguente per visualizzare l'utilizzo dell'archiviazione in memoria:Or use the following query to show the In-memory storage utilization:

SELECT xtp_storage_percent FROM sys.dm_db_resource_stats

Correggere situazioni di archiviazione OLTP non in memoria - Errori 41823 e 41840Correct out-of-In-Memory OLTP storage situations - Errors 41823 and 41840

Se si raggiunge il limite di archiviazione OLTP in memoria nel database, le operazioni INSERT, UPDATE, ALTER e CREATE hanno esito negativo con messaggi di errore 41823 (per i database autonomi) o 41840 (per i pool elastici).Hitting the In-Memory OLTP storage cap in your database results in INSERT, UPDATE, ALTER and CREATE operations failing with error message 41823 (for standalone databases) or error 41840 (for elastic pools). Entrambi gli errori comportano l'interruzione della transazione attiva.Both errors cause the active transaction to abort.

I messaggi di errore 41823 e 41840 indicano che le tabelle e le variabili di tabella del database o del pool ottimizzate per la memoria hanno raggiunto la dimensione massima di archiviazione OLTP in memoria.Error messages 41823 and 41840 indicate that the memory-optimized tables and table variables in the database or pool have reached the maximum In-Memory OLTP storage size.

Per risolvere l'errore:To resolve this error, either:

  • Eliminare i dati dalle tabelle ottimizzate per la memoria, eseguendo potenzialmente l'offload dei dati in tabelle tradizionali basate su disco oppureDelete data from the memory-optimized tables, potentially offloading the data to traditional, disk-based tables; or,
  • 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.Upgrade the service tier to one with enough in-memory storage for the data you need to keep in memory-optimized tables.

Nota

In rari casi, gli errori 41823 e 41840 possono essere temporanei, con il risultato che lo spazio di archiviazione OLTP in memoria si rivela sufficiente ed è possibile eseguire nuovamente l'operazione con esito positivo.In rare cases, errors 41823 and 41840 can be transient, meaning there is enough available In-Memory OLTP storage, and retrying the operation succeeds. Pertanto, quando si verifica l'errore 41823 o 41840 per la prima volta, è consigliabile monitorare lo spazio complessivo di archiviazione OLTP in memoria e provare a eseguire nuovamente l'operazione.We therefore recommend to both monitor the overall available In-Memory OLTP storage and to retry when first encountering error 41823 or 41840. Per altre informazioni sulla logica di ripetizione dei tentativi, vedere Rilevamento dei conflitti e logica di ripetizione dei tentativi.For more information about retry logic, see Conflict Detection and Retry Logic with In-Memory OLTP.

Passaggi successiviNext steps

Per le linee guida sul monitoraggio, vedere Monitoraggio del database SQL di Azure tramite le visualizzazioni di gestione dinamica.For monitoring guidance, see Monitoring Azure SQL Database using dynamic management views.