sys.dm_db_stats_properties(Transact-SQL)

현재 SQL Server 데이터베이스에서 지정한 데이터베이스 개체(테이블 또는 인덱싱된 뷰)에 대한 통계 속성을 반환합니다.

[!참고]

동적 관리 개체 sys.dm_db_stats_properties는 서비스 팩 1 이상의 SQL Server 2012 그리고 서비스 팩 2 이상의 SQL Server 2008 R2에서 사용할 수 있습니다.

구문

sys.dm_db_stats_properties (object_id, stats_id)

인수

  • object_id
    해당 통계 중 하나의 속성이 요청되는 현재 데이터베이스에 포함된 개체의 ID입니다. object_id는 int입니다.

  • stats_id
    지정된 object_id 통계의 ID입니다. 통계 ID는 sys.stats 동적 관리 뷰에서 얻을 수 있습니다. stats_id는 int입니다.

반환된 테이블

열 이름

데이터 형식

설명

object_id

int

통계 개체의 속성을 반환하는 개체(테이블 또는 인덱싱된 뷰)의 ID입니다.

stats_id

int

통계 개체의 ID입니다. 테이블 또는 인덱싱된 뷰 내에서 고유합니다. 자세한 내용은 sys.stats(Transact-SQL)를 참조하십시오.

last_updated

datetime2

통계 개체가 마지막으로 업데이트된 날짜와 시간입니다.

rows

bigint

통계가 마지막으로 업데이트되었을 때 테이블 또는 인덱싱된 뷰의 전체 행 수입니다. 통계가 필터링되거나 필터링된 인덱스에 해당하는 경우 행 수가 테이블의 행 수보다 적을 수 있습니다.

rows_sampled

bigint

통계 계산을 위해 샘플링된 전체 행 수입니다.

steps

int

히스토그램의 총 단계 수입니다. 자세한 내용은 DBCC SHOW_STATISTICS(Transact-SQL)를 참조하십시오.

unfiltered_rows

bigint

필터링된 통계의 필터 식을 적용하기 전 테이블의 전체 행 수입니다. 통계가 필터링되지 않으면 unfiltered_rows는 rows 열에서 반환하는 값과 동일합니다.

modification_counter

bigint

통계를 마지막으로 업데이트한 이후 선행 통계 열(히스토그램이 작성된 열)의 총 수정 개수입니다.

주의

다음과 같은 경우 sys.dm_db_stats_properties는 빈 행 집합을 반환합니다.

  • object_id 또는 stats_id가 NULL입니다.

  • 지정한 개체를 찾을 수 없거나 지정한 개체가 테이블 또는 인덱싱된 뷰에 해당되지 않습니다.

  • 지정한 통계 ID가 특정 개체 ID의 기존 통계에 해당되지 않습니다.

  • 현재 사용자에게 통계 개체를 볼 수 있는 권한이 없습니다.

이 동작은 sys.objectssys.stats와 같은 뷰의 행에 교차 적용될 때 sys.dm_db_stats_properties를 안전하게 사용할 수 있습니다.

사용 권한

사용자가 통계 열에 대한 select 권한이 있거나 테이블을 소유하거나 sysadmin 고정 서버 역할, db_owner 고정 데이터베이스 역할, 또는 db_ddladmin 고정 데이터베이스 역할의 멤버여야 합니다.

1.테이블의 모든 통계 속성 반환

다음 예에서는 테이블 TEST에 있는 모든 통계의 속성을 반환합니다.

SELECT
    sp.stats_id, name, filter_definition, last_updated, rows, rows_sampled, steps, unfiltered_rows, modification_counter 
FROM sys.stats AS stat 
CROSS APPLY sys.dm_db_stats_properties(stat.object_id, stat.stats_id) AS sp
WHERE stat.object_id = object_id('TEST');

2.빈번하게 수정되는 개체의 통계 속성 반환

다음 예는 마지막 통계 업데이트 이후 1000번 넘게 수정된 선행 열에 대한 현재 데이터베이스의 모든 테이블, 인덱싱된 뷰 및 통계를 반환합니다.

SELECT 
    obj.name, obj.object_id, stat.name, stat.stats_id, last_updated, modification_counter
FROM sys.objects AS obj 
JOIN sys.stats stat ON stat.object_id = obj.object_id
CROSS APPLY sys.dm_db_stats_properties(stat.object_id, stat.stats_id) AS sp
WHERE modification_counter > 1000;

참고 항목

참조

DBCC SHOW_STATISTICS(Transact-SQL)

sys.stats(Transact-SQL)

개체 관련 동적 관리 뷰 및 함수(Transact-SQL)

동적 관리 뷰 및 함수(Transact-SQL)