다음을 통해 공유


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

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

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

참고

메모리 최적화 임시 테이블은 SQL Server 및 Azure SQL Managed Instance에서만 사용할 수 있습니다. 메모리 최적화 테이블 및 임시 테이블은 Azure SQL Database에서 독립적으로 사용할 수 있습니다.

메타데이터 검색

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