sys.dm_tran_top_version_generators(Transact-SQL)
버전 저장소의 버전 대부분을 생성하는 개체에 대한 가상 테이블을 반환합니다. sys.dm_tran_top_version_generators는 database_id 및 rowset_id를 기준으로 그룹화된 상위 256개의 집계 레코드 길이를 반환합니다. sys.dm_tran_top_version_generators는 dm_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_id 및 rowset_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로 생성되며 두 테이블에서 버전이 생성됨을 보여 줍니다.