Performance considerations

2016 (13.x) and later This article discusses some specific performance considerations when using system-versioned memory-o

2016 (13.x) and later

This article discusses some specific performance considerations when using system-versioned

memory-optimized temporal tables.

When you add system-versioning to an existing non-temporal table, expect a performance

impact on update and delete operations, because the history table is updated automatically.

Every update and delete is recorded in an internal memory-optimized history table. You might

experience unexpected memory consumption if your workload uses those two operations

massively. Therefore we advise you the following considerations:

Don’t perform massive deletes from the current table in one step. Consider deleting data

in multiple batches, with manually invoked data flush in between, with

sp_xtp_flush_temporal_history

, or while.

Don’t perform massive table updates at once, as it can result in memory consumption

that is twice the amount of memory required to update a non-temporal memory-

optimized table. This doubled memory consumption is temporary, because the data flush

task works regularly to keep memory consumption of internal staging tables within

projected boundaries in the steady state. The boundary is 10 percent of memory

consumption of the current temporal table. Consider doing massive updates in multiple

batches, or while

, such as using updates to set the defaults for

newly added columns.

The period of activation for the data flush task isn’t configurable, but you can manually execute

sp_xtp_flush_temporal_history

as needed.

Consider using clustered columnstore as a storage option for a disk-based history table,

especially if you plan to run analytics queries on historical data that make use of aggregate or

windowing functions. In that case, a clustered columnstore index is an optimal choice for your

history table. Clustered columnstore indexes provide good data compression, and behave in an

insert-friendly

manner, aligning with how history data is generated.

SYSTEM_VERSIONING = OFF
SYSTEM_VERSIONING = OFF