Praca z tabelami czasowymi zoptymalizowanymi pod kątem pamięci i wersjonowanymi systemowo
Dotyczy: SQL Server 2016 (13.x) i nowszych
azure SQL Managed Instance
W tym artykule omówiono, jak praca z tabelą czasową zoptymalizowaną pod kątem pamięci i wersjonowaną systemowo różni się od pracy z tabelą czasową opartą na dysku i wersjonowaną systemowo.
Notatka
Tabele czasowe zoptymalizowane pod kątem pamięci są dostępne tylko w programie SQL Server i usłudze Azure SQL Managed Instance. Tabele zoptymalizowane pod kątem pamięci i tabele czasowe są niezależnie dostępne w usłudze Azure SQL Database.
Odnajdywanie metadanych
Aby odnaleźć metadane dotyczące tabeli czasowej zoptymalizowanej pod kątem pamięci, należy połączyć informacje z sys.tables i sys.internal_tables. Tabela czasowa z wersją systemu jest przedstawiana jako parent_object_id wewnętrznej tabeli historii w pamięci
W tym przykładzie pokazano, jak wykonywać zapytania i łączyć te tabele.
SELECT SCHEMA_NAME(T1.schema_id) AS TemporalTableSchema,
OBJECT_NAME(IT.parent_object_id) AS TemporalTableName,
T1.object_id AS TemporalTableObjectId,
IT.Name AS InternalHistoryStagingName,
SCHEMA_NAME(T2.schema_id) AS HistoryTableSchema,
OBJECT_NAME(T1.history_table_id) AS HistoryTableName
FROM sys.internal_tables IT
INNER JOIN sys.tables T1
ON IT.parent_object_id = T1.object_id
INNER JOIN sys.tables T2
ON T1.history_table_id = T2.object_id
WHERE T1.is_memory_optimized = 1
AND T1.temporal_type = 2;
Modyfikowanie danych
Tabele czasowe zoptymalizowane pod kątem pamięci można modyfikować za pomocą natywnie skompilowanych procedur składowanych, które umożliwiają konwertowanie tabel zoptymalizowanych pod kątem pamięci niebędących czasowymi oraz zachowanie istniejących natywnie skompilowanych procedur składowanych.
W tym przykładzie można zmodyfikować wcześniej utworzoną tabelę w natywnie skompilowanym module.
CREATE PROCEDURE dbo.UpdateFXCurrencyPair (
@ProviderID INT,
@CurrencyID1 INT,
@CurrencyID2 INT,
@BidRate DECIMAL(8, 4),
@AskRate DECIMAL(8, 4)
)
WITH NATIVE_COMPILATION, SCHEMABINDING,
EXECUTE AS OWNER
AS
BEGIN ATOMIC
WITH (
TRANSACTION ISOLATION LEVEL = SNAPSHOT,
LANGUAGE = N'English'
)
UPDATE dbo.FXCurrencyPairs
SET AskRate = @AskRate,
BidRate = @BidRate
WHERE ProviderID = @ProviderID
AND CurrencyID1 = @CurrencyID1
AND CurrencyID2 = @CurrencyID2
END
GO;
Powiązana zawartość
- Systemowo-wersjonowane tabele czasowe z tabelami zoptymalizowanymi pod kątem pamięci
- Tworzenie tabeli czasowej zoptymalizowanej pod kątem pamięci w wersji systemowej
- Monitorowanie tabel czasowych zoptymalizowanych pod kątem pamięci w wersji systemowej
- Wydajność systemowych tabel czasowych zoptymalizowanych pod kątem pamięci
- tabele czasowe
- sprawdzanie spójności systemu tabel czasowych
- Zarządzanie przechowywaniem danych historycznych w tabelach czasowych z wersjonowaniem systemowym
- widoki i funkcje metadanych tabeli czasowej