메모리 액세스에 최적화된 시스템 버전 임시 테이블로 작업

적용 대상: SQL Server 2016(13.x) 이상 Azure SQL DatabaseAzure SQL Managed Instance

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

참고

메모리 최적화 테이블을 임시로 사용하는 방식은 SQL Server에만 적용되며 SQL Database에는 적용되지 않습니다.

메타데이터 검색

메모리 최적화 시스템 버전 관리 temporal 테이블에 대한 메타데이터를 검색하려면 sys.tables(Transact-SQL)sys.internal_tables(Transact-SQL)의 정보를 결합해야 합니다. 시스템 버전 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
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

데이터 수정

시스템 버전 메모리 최적화 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 ;

참고 항목