Prestazioni delle tabelle temporali con controllo delle versioni di sistema e ottimizzate per la memoria
Si applica a: SQL Server 2016 (13.x) e versioni successive Database SQL di Azure Istanza gestita di SQL di Azure
Questo articolo presenta alcune considerazioni sulle prestazioni specifiche quando si usano le tabelle temporali ottimizzate per la memoria con controllo delle versioni di sistema.
Quando si aggiunge il controllo elle versioni di sistema a una tabella non temporale è prevedibile un impatto sulle prestazioni nelle operazioni di aggiornamento ed eliminazione perché la tabella di cronologia viene aggiornata automaticamente.
Considerazioni sulle prestazioni
Tutti gli aggiornamenti e le eliminazioni vengono registrati in una tabella di cronologia interna ottimizzata per la memoria. Si potrebbe verificare un consumo di memoria imprevisto se il carico di lavoro utilizza queste due operazioni in modo massiccio. Pertanto, si consiglia quanto segue:
Non eseguire eliminazioni massicce dalla tabella corrente con un unico passaggio. Si consiglia di eliminare manualmente i dati in più batch con uno scaricamento dei dati invocato manualmente tra l'uno e l'altro, con sp_xtp_flush_temporal_history oppure mentre
SYSTEM_VERSIONING = OFF
.Non eseguire aggiornamenti massicci della tabella in una sola volta perché questo potrebbe comportare un consumo di memoria due volte superiore rispetto alla memoria necessaria per aggiornare una tabella non temporale ottimizzata per la memoria. Il consumo di memoria raddoppiato è temporaneo perché l'attività di scaricamento dati è regolarmente all'opera per mantenere il consumo di memoria della tabella di staging interna entro i limiti previsti per lo stato stabile. Il limite è il 10 percento del consumo di memoria della tabella temporale corrente. È consigliabile eseguire gli aggiornamenti massicci in più batch o mentre
SYSTEM_VERSIONING = OFF
, ad esempio usando gli aggiornamenti per impostare i valori predefiniti per le colonne aggiunte.
Il periodo di attivazione dell'attività di scaricamento dei dati non è configurabile, ma è possibile eseguire manualmente sp_xtp_flush_temporal_history quando necessario.
Si consiglia di usare columnstore cluster come opzione di archiviazione per la tabella di cronologia basata su disco, soprattutto se si prevede di eseguire query di analisi sui dati cronologici che utilizzano funzioni di aggregazione o windowing. In tal caso, un indice columnstore di cluster è una scelta ottimale per la tabella di cronologia. Gli indici columnstore di cluster offrono una buona compressione dei dati e si comportano in modo semplice da inserire, in linea con la modalità di generazione dei dati di cronologia.
Contenuto correlato
- Tabelle temporali con controllo delle versioni di sistema con tabelle ottimizzate per la memoria
- Creare una tabella temporale ottimizzata con controllo delle versioni di sistema e ottimizzazione per la memoria
- Usare una tabella temporale con controllo delle versioni di sistema e ottimizzazione per la memoria
- Monitorare una tabella temporale con controllo delle versioni di sistema e ottimizzata per la memoria
- Tabelle temporali
- Verifiche coerenza del sistema della tabella temporale
- Gestire la conservazione dei dati storici nelle tabelle temporali con controllo delle versioni di sistema
- Funzioni e viste per i metadati delle tabelle temporali