Работа с оптимизированными для памяти темпоральными таблицами с системным управлением версиями
Применимо к: SQL Server 2016 (13.x) и более поздних версий Azure SQL DatabaseУправляемый экземпляр SQL Azure
В этом разделе обсуждается, как работа с оптимизированной для памяти темпоральной таблицей с системным управлением версиями отличается от работы с дисковой темпоральной таблицей с системным управлением версиями.
Примечание
Использование временной функции с таблицами, оптимизированными для памяти, применяется только к SQL Server и не применяется к База данных SQL.
Обнаружение метаданных
Чтобы обнаружить метаданные о оптимизированной для памяти темпоральной таблице с системными версиями, необходимо объединить сведения из sys.tables (Transact-SQL) и sys.internal_tables (Transact-SQL). Темпоральная таблица с системным управлением версиями представляется в виде 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
JOIN sys.tables T1
ON IT.parent_object_id = T1.object_id
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 ;
См. также:
- Темпоральные таблицы с системным управлением версиями и таблицы, оптимизированные для памяти
- Создание оптимизированной для памяти темпоральной таблицы с системным управлением версиями
- Мониторинг оптимизированных для памяти темпоральных таблиц с системным управлением версиями
- Вопросы производительности темпоральных таблиц с системным управлением версиями, оптимизированных для памяти
- Темпоральные таблицы
- Проверка согласованности системной темпоральной таблицы
- Управление хранением данных журнала в темпоральных таблицах с системным управлением версиями
- Представления и функции метаданных для временной таблицы
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по