메모리 액세스에 최적화된 시스템 버전 관리 임시 테이블 성능

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

이 주제에서는 시스템 버전 관리 메모리 최적화 temporal 테이블을 사용할 때의 몇 가지 특정 성능 고려 사항을 설명합니다.

  • 기록 테이블은 자동으로 업데이트되므로 기존의 비temporal 테이블에 시스템 버전 지정 기능을 추가하면 업데이트 및 삭제 작업의 성능에 영향을 줄 수 있습니다.

  • 모든 업데이트와 삭제는 내부 메모리 최적화 기록 테이블에 기록되므로 워크로드에서 이러한 두 작업을 대량으로 사용하는 경우 예기치 않은 메모리 사용량이 발생할 수 있습니다. 그러므로 다음 규칙을 따르는 것이 좋습니다.

    • 공간을 정리하여 사용 가능한 RAM을 늘리기 위해 현재 테이블에서 대량 삭제를 수행하지 마세요. sp_xtp_flush_temporal_history를 호출하거나 SYSTEM_VERSIONING = OFF를 통해 수동으로 호출된 데이터 플러시를 사용하여 여러 일괄 처리의 데이터를 삭제하는 것이 좋습니다.
    • 많은 테이블을 동시에 업데이트하면 메모리가 비 임시 메모리 최적화 테이블을 업데이트하는 데 필요한 메모리 양의 두 배를 사용할 수 있으므로 많은 테이블을 동시에 업데이트하지 마세요. 이처럼 메모리 사용량이 2배로 증가하는 것은 일시적인 현상입니다. 내부 준비 테이블의 메모리 사용량을 안정적 상태의 예상 메모리 사용량 경계(현재 temporal 테이블 메모리 사용량의 약 10%) 이내로 유지하기 위해 데이터 플러시 태스크가 정기적으로 수행되기 때문입니다. 업데이트를 사용하여 새로 추가된 열의 기본값 설정과 같이 일괄 처리 여러 개에서 또는 SYSTEM_VERSIONING = OFF를 통해 대량 업데이트를 수행하는 것이 좋습니다.
  • 데이터 플러시 작업 활성화 기간을 구성할 수 없지만 sp_xtp_flush_temporal_history를 호출하여 프로세스를 시행할 수 있습니다.

  • 특히 기록 데이터에서 집계 또는 기간 지정 함수를 사용하는 분석 쿼리를 실행하려는 경우 클러스터형 columnstore를 디스크 기반 기록 테이블의 스토리지 옵션으로 사용하는 것이 좋습니다. 클러스터형 columnstore는 효율적인 데이터 압축 기능을 제공하며 기록 데이터가 생성되는 방식에 적합한 삽입 중심 방식으로 동작하므로 이러한 경우 기록 테이블에 사용하면 효율적인 옵션입니다.

참고 항목