Prestazioni delle tabelle temporali con controllo delle versioni di sistema e ottimizzazione per la memoria

Si applica a: SQL Server 2016 (13.x) e versioni successive Database SQL diIstanza gestita di SQL di Azure

Questo argomento 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.

  • Ogni operazione di aggiornamento ed eliminazione viene registrata nella tabella di cronologia ottimizzata per la memoria interna, per cui può verificarsi un utilizzo imprevisto di memoria se il carico di lavoro fa un uso massiccio di queste due operazioni. Pertanto si consiglia quanto segue:

    • Non eseguire eliminazioni massicce dalla tabella corrente per aumentare la RAM disponibile con la pulizia dello spazio. È consigliabile eliminare manualmente i dati in più batch intervallando lo scaricamento dati richiamato manualmente richiamando sp_xtp_flush_temporal_historyoppure mentre SYSTEM_VERSIONING = OFF.
    • Non eseguire aggiornamenti massicci della tabella in una sola volta perché questo può 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 (circa il 10% 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 per le attività di scaricamento dati non è configurabile ma è possibile applicare il processo richiamando sp_xtp_flush_temporal_history.

  • 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 usano funzioni di aggregazione o windowing. In questo caso columnstore cluster è una soluzione ottimale per la tabella di cronologia perché fornisce una buona compressione dei dati e si comporta in modo "favorevole all'inserimento", in linea con il modo in cui vengono generati i dati cronologici.

Vedi anche