다음을 통해 공유


sys.dm_tran_top_version_generators(Transact-SQL)

버전 저장소의 버전 대부분을 생성하는 개체에 대한 가상 테이블을 반환합니다. sys.dm_tran_top_version_generatorsdatabase_idrowset_id를 기준으로 그룹화된 상위 256개의 집계 레코드 길이를 반환합니다. sys.dm_tran_top_version_generatorsdm_tran_version_store 가상 테이블을 쿼리하여 데이터를 검색합니다. sys.dm_tran_top_version_generators는 버전 저장소를 쿼리하며 버전 저장소가 매우 클 수 있으므로 실행하기에 비효율적인 뷰입니다. 버전 저장소를 가장 많이 사용하는 소비자를 찾으려면 이 함수를 사용하는 것이 좋습니다.

구문

sys.dm_tran_top_version_generators

반환된 테이블

열 이름

데이터 형식

설명

database_id

int

데이터베이스 ID입니다.

rowset_id

bigint

행 집합 ID입니다.

aggregated_record_length_in_bytes

int

버전 저장소에 있는 각 database_idrowset_id 쌍의 레코드 길이 합계입니다.

사용 권한

서버에 대한 VIEW SERVER STATE 권한이 필요합니다.

주의

sys.dm_tran_top_version_generators는 전체 버전 저장소를 검색할 때 많은 수의 페이지를 읽어야 할 수 있으므로 sys.dm_tran_top_version_generators를 실행하면 시스템 성능에 영향을 미칠 수 있습니다.

다음 예에서는 ALLOW_SNAPSHOT_ISOLATION 및 READ_COMMITTED_SNAPSHOT 옵션이 ON으로 설정된 데이터베이스에서 각각 XSN(트랜잭션 시퀀스 번호)으로 식별되는 4개의 동시 트랜잭션이 실행되는 테스트 시나리오를 사용합니다. 다음 트랜잭션이 실행되고 있습니다.

  • XSN-57은 직렬화 격리에서 실행되는 UPDATE 작업입니다.

  • XSN-58은 XSN-57과 같습니다.

  • XSN-59는 스냅숏 격리에서 실행되는 SELECT 작업입니다.

  • XSN-60은 XSN-59와 같습니다.

다음 쿼리가 실행됩니다.

SELECT
    database_id,
    rowset_id,
    aggregated_record_length_in_bytes
  FROM sys.dm_tran_top_version_generators;

결과 집합은 다음과 같습니다.

database_id rowset_id            aggregated_record_length_in_bytes
----------- -------------------- ---------------------------------
9           72057594038321152    87
9           72057594038386688    33

출력은 모든 버전이 database_id9로 생성되며 두 테이블에서 버전이 생성됨을 보여 줍니다.