데이터베이스 개발자 Tip & 강좌

SQLER의 개발자들이 만들어가는 데이터베이스 사용자 Tip & 강좌 게시판입니다. SQL서버, Oracle, MySQL 등 여러 클라우드/오픈소스 기반 데이터베이스 개발 및 운영 관련 팁과 쿼리 노하우를 이곳에서 가장 먼저 접하실 수 있습니다. 많은 도움 되시길 바랍니다.

SQL Server 2012 DMV를 이용한 통계 정보 확인

 

  • Version : SQL Server 2008R2 SP2, 2012 SP1

 

통계 정보를 확인 하기 위해서는 DBCC SHOWSTATISTICS 명령어를 이용하였다. 내가 운영하는 서버가 SQL Server 2008R2 SP2 또는 SQL Server 2012 SP1 상위 버전인 경우 DMV를 통하여서도 통계 속성 정보를 확인 해 볼 수 있다.

DBCC SHOWSTATISTICS 통계 관련 아티클 : http://sqlmvp.kr/140165557766

 

새로운 통계 관련 DMV를 사용하기 위해서는 위에서 설명 하였듯이 SQL Server 2008R2 SP2 또는 SQL Server 2012 SP1 이상 설치 되어 있어야 한다.

 

[구문]

sys.dm_db_stats_properties (object_id, stats_id)

 

  • Object_id (int) : 현재 데이터베이스에 포함된 개체의 ID
  • Stats_id (int) : 지정된 object_id 통계. 통계ID는 sys.stats 동적 관리뷰에서 확인 할 수 있다.

 

[테이블의 모든 통계 속성 반환]

다음 스크립트를 통하여 해당 테이블에 대한 통계 속성을 확인 할 수 있다.

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('[Person].[Person]');

 

 

열 이름

데이터 형식

설명

Object_id

Int

테이블 또는 인덱싱된 뷰의 ID

Stats_id

Int

통계 개체의 ID. 테이블 또는 인덱싱된 뷰 내에서 고유.

Last_updated

Datetime2

마지막으로 업데이트된 날짜

Rows

Bigint

통계 마지막 업데이트시 전체 행 수. 필터링 되거나 필터링된 인덱스의 경우 실제 행 수보다 적을 수 있음

Row_sampled

Bigint

통계 계산을 위해 샘플링된 전체 행 수

Steps

Int

히스토그램의 총 단계 수

Unfiltered_rows

Bigint

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

Modification_counter

Bigint

통계를 마지막으로 업데이트한 이후 히스토그램이 작성된 열의 총 수정 개수

 

 

[빈번히 수정된 통계 속성 반환]

다음 스크립트는 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;

 

 

 

[참고자료]

http://msdn.microsoft.com/ko-kr/library/jj553546.aspx

http://msdn.microsoft.com/ko-kr/library/12be2923-7289-4150-b497-f17e76a50b2e

http://msdn.microsoft.com/ko-kr/library/42605c80-126f-460a-befb-a0b7482fae6a

 

 

강성욱 / jevida@naver.com
Microsoft SQL Server MVP
Blog : http://sqlmvp.kr
Facebook : http://facebook.com/sqlmvp

No. Subject Author Date Views
1770 SQL Server 쿼리 처리 아키텍처 _ SQL 문 처리 (3/4) – 뷰(View)의 인덱스 확인 jevida(강성욱) 2016.09.27 972
1769 SQL Server 쿼리 처리 아키텍처 _ SQL 문 처리 (2/4) – 뷰(View) 확인 jevida(강성욱) 2016.09.27 1447
1768 SQL Server 쿼리 처리 아키텍처 _ SQL 문 처리 (1/4) – SQL 문 최적화 및 Worktables jevida(강성욱) 2016.09.27 932
» SQL Server DMV를 이용한 통계 정보 확인 jevida(강성욱) 2016.09.27 1455
1766 DMV를 이용한 플랜 캐시 사용 정보 확인 jevida(강성욱) 2016.09.27 1172
1765 SQL Server 테이블 및 인덱스 구조 아키텍처(4/4) – 비클러스터형 인덱스 구조 jevida(강성욱) 2016.09.27 1064
1764 SQL Server 테이블 및 인덱스 구조 아키텍처(3/4) – 클러스터형 인덱스 구조 jevida(강성욱) 2016.09.27 1362
1763 SQL Server 테이블 및 인덱스 구조 아키텍처(2/4) – 힙 구조 jevida(강성욱) 2016.09.27 1067
1762 SQL Server 테이블 및 인덱스 구조 아키텍처(1/4) – 테이블 및 인덱스 구성 jevida(강성욱) 2016.09.27 1123
1761 SQL Server 트랜잭션 로그 아키텍처(4/4) – 미리 쓰기 트랜잭션 로그 jevida(강성욱) 2016.09.27 1537
1760 SQL Server 트랜잭션 로그 아키텍처(3/4) – 검사점 및 로그의 활성 부분 jevida(강성욱) 2016.09.27 1048
1759 SQL Server 트랜잭션 로그 아키텍처(2/4) – 트랜잭션 로그 물리 아키텍처 jevida(강성욱) 2016.09.27 1094
1758 SQL Server 트랜잭션 로그 아키텍처(1/4) – 트랜잭션 로그 논리 아키텍처 jevida(강성욱) 2016.09.27 1246
1757 파일 및 파일 그룹 아키텍처 jevida(강성욱) 2016.09.27 797
1756 SQL Server 페이지 및 익스텐트 아키텍처(4/4) – 수정된 익스텐트 추적 jevida(강성욱) 2016.09.27 1128
1755 SQL Server 페이지 및 익스텐트 아키텍처(3/4) – 개체에서 사용하는 공간 관리 jevida(강성욱) 2016.09.27 970
1754 SQL Server 페이지 및 익스텐트 아키텍처(2/4) – 익스텐트 할당 및 빈공간 관리 jevida(강성욱) 2016.09.27 1222
1753 SQL Server 페이지 및 익스텐트 아키텍처(1/4) – 페이지 및 익스텐트 이해 jevida(강성욱) 2016.09.27 2721
1752 SQL Server Error Log 보관 주기 설정 jevida(강성욱) 2016.09.15 2159
1751 SQL Server 네트워크 백업 트러블슈팅(UNC 설정) jevida(강성욱) 2016.09.15 5026





XE Login