Delete from table with(snapshot)
-
05-10-2020 - |
Question
I was trying to learn querystore. When going through few queries involved in query store one of the query is below
DELETE TOP (1000000)
FROM [sys].[memory_optimized_history_table_1179151246]
WITH (SNAPSHOT)
Full query:
(@rowcount INT OUTPUT) DELETE TOP (1000000) FROM [sys].[memory_optimized_history_table_1179151246] WITH (SNAPSHOT)
OUTPUT
DELETED.[ColdRoomTemperatureID], DELETED.[ColdRoomSensorNumber], DELETED.[RecordedWhen], DELETED.[Temperature], DELETED.[ValidFrom], DELETED.[ValidTo]
INTO [Warehouse].[ColdRoomTemperatures_Archive]
WHERE [ValidTo] < GetHkOldestTxTemporalTs()
I searched a lot to see what the WITH (SNAPSHOT)
option means, but I was not able to find anything.
Can you please help me in understanding what does WITH (SNAPSHOT)
mean?
Let me know ,if you need any further info.
La solution
This is a table hint that can be used in various statements (SELECT, INSERT, DELETE, UPDATE, MERGE). See the related page at msdn: Table hints and the linked Introduction to Memory-Optimized tables.
For further information about isolation levels, see SET TRANSACTION ISOLATION LEVEL (Transact-SQL).
Syntax
WITH ( <table_hint> [ [, ]...n ] ) <table_hint> ::= [ NOEXPAND ] { INDEX ( index_value [ ,...n ] ) | INDEX = ( index_value ) | FORCESEEK [( index_value ( index_column_name [ ,... ] ) ) ] | FORCESCAN ... | SNAPSHOT ...
...
SNAPSHOT
Applies to: SQL Server 2014 through SQL Server 2016.
The memory-optimized table is accessed under
SNAPSHOT
isolation.
SNAPSHOT
can only be used with memory-optimized tables (not with disk-based tables).
For more information, see Introduction to Memory-Optimized Tables.