다음을 통해 공유


메모리 최적화 시스템 버전 temporal 테이블로 작업

적용 대상: SQL Server 2016(13.x) 이상 Azure SQL 데이터베이스 Azure SQL Managed Instance

이 문서에서는 메모리 최적화 시스템 버전 temporal 테이블로 작업하는 방식과 디스크 기반 시스템 버전 temporal 테이블로 작업하는 방식의 차이점에 대해 설명합니다.

참고 항목

메모리 최적화 temporal 테이블은 AZURE SQL Database가 아닌 SQL Server에서만 사용할 수 있습니다.

메타데이터 검색

메모리 최적화 시스템 버전 관리 temporal 테이블에 대한 메타데이터를 검색하려면 sys.tablessys.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;