Работа с темпоральными таблицами, оптимизированными для памяти
Область применения: SQL Server 2016 (13.x) и более поздних версий База данных SQL Azure Управляемый экземпляр SQL Azure
В этой статье описывается, как работа с темпоральной таблицей, оптимизированной для памяти, отличается от работы с темпоральной таблицей на основе диска.
Примечание.
Оптимизированные для памяти временные таблицы доступны только в SQL Server, а не База данных SQL Azure.
Обнаружение метаданных
Чтобы обнаружить метаданные о темпоральной таблице, оптимизированной для памяти, необходимо объединить сведения из системных таблиц и sys.internal_tables. Темпоральная таблица с системным управлением версиями представляется в виде parent_object_id внутренней таблицы журнала в памяти.
В этом примере показано, как выполнить запрос к этим таблицам и их соединение.
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;
Изменение данных
Оптимизированные для памяти временные таблицы можно изменять с помощью скомпилированных в собственном коде хранимых процедур, что позволяет преобразовывать оптимизированные для памяти таблицы и сохранять существующие хранимые процедуры в собственном коде.
В этом примере показано, как можно изменить ранее созданную таблицу в модуле, скомпилированном в собственном коде.
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;
Связанный контент
- Системные темпоральные таблицы с оптимизированными для памяти таблицами
- Создание темпоральной таблицы, оптимизированной для памяти
- Мониторинг оптимизированных для памяти системных темпоральных таблиц
- Производительность темпоральной таблицы, оптимизированной для памяти
- Темпоральные таблицы
- Проверки согласованности систем темпоральных таблиц
- Управление хранением исторических данных в системных темпоральных таблицах
- Представления и функции темпоральных метаданных таблицы