적용 대상: SQL Server 2016(13.x) 이상 버전
Azure SQL Managed Instance
이 문서에서는 메모리 최적화 시스템 버전 temporal 테이블로 작업하는 방식과 디스크 기반 시스템 버전 temporal 테이블로 작업하는 방식의 차이점에 대해 설명합니다.
참고
메모리 최적화 임시 테이블은 SQL Server 및 Azure SQL Managed Instance에서만 사용할 수 있습니다. 메모리 최적화 테이블 및 임시 테이블은 Azure SQL Database에서 독립적으로 사용할 수 있습니다.
메타데이터 검색
메모리 최적화 시스템-버전 관리 테이블의 메타데이터를 검색하려면 sys.tables 및 sys.internal_tables의 정보를 결합해야 합니다. 시스템 버전 temporal 테이블은 내부 메모리 내 기록 테이블에 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;
데이터 수정
메모리 최적화된 temporal 테이블은 네이티브로 컴파일된 저장 프로시저를 통해 수정할 수 있으며, 비-temporal 메모리 최적화 테이블로 변환하고 기존의 네이티브 저장 프로시저를 유지할 수 있습니다.
아래 예에는 앞에서 만든 테이블을 고유하게 컴파일된 모듈에서 수정할 수 있는 방법이 나와 있습니다.
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;