다음을 통해 공유


메모리 최적화 시스템 버전 관리 temporal 테이블 성능

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

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

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

성능 고려 사항

모든 업데이트 및 삭제는 내부 메모리 최적화 기록 테이블에 기록됩니다. 워크로드에서 이러한 두 작업을 대량으로 사용하는 경우 예기치 않은 메모리 사용량이 발생할 수 있습니다. 따라서 다음 사항을 고려해 보시기 바랍니다.

  • 한 단계에서 현재 테이블에서 대량 삭제를 수행하지 마세요. sp_xtp_flush_temporal_history를 사용하거나 SYSTEM_VERSIONING = OFF 중에 수동으로 호출된 데이터 플러시를 사용하여 여러 일괄 처리의 데이터를 삭제하는 것이 좋습니다.

  • 많은 테이블을 동시에 업데이트하면 메모리가 비 temporal 메모리 최적화 테이블을 업데이트하는 데 필요한 메모리 양의 두 배를 사용할 수 있으므로 많은 테이블을 동시에 업데이트하지 마세요. 메모리 사용량이 두 배로 증가하는 것은 일시적인 현상이며, 데이터 플러시 작업은 내부 준비 테이블의 메모리 사용량을 예상 경계 내로 안정적으로 유지하기 위해 정기적으로 작동하기 때문입니다. 경계는 현재 temporal 테이블의 메모리 사용량의 10%입니다. 업데이트를 사용하여 새로 추가된 열의 기본값 설정과 같이 다수의 배치로 대규모 업데이트를 수행하거나 SYSTEM_VERSIONING = OFF 중에 업데이트를 수행하는 것이 좋습니다.

데이터 플러시 작업의 활성화 기간을 구성할 수 없지만 필요에 따라 sp_xtp_flush_temporal_history를 수동으로 실행할 수 있습니다.

특히 기록 데이터에서 집계 또는 기간 지정 함수를 사용하는 분석 쿼리를 실행하려는 경우 클러스터형 columnstore를 디스크 기반 기록 테이블의 스토리지 옵션으로 사용하는 것이 좋습니다. 이 경우 클러스터형 columnstore 인덱스는 기록 테이블에 가장 적합한 선택입니다. 클러스터형 columnstore 인덱스는 좋은 데이터 압축을 제공하고 기록 데이터가 생성되는 방식에 맞춰 삽입 친화적인 방식으로 동작합니다.