728x90
운영하던 DB에 특정 쿼리 속도가 나오지 않는다...
쿼리 튜닝도 이슈 없어 보이고 인덱스 (INDEX) 도 확인했더니 이상이 없어 보인다
마지막 방법.. index 리빌드 진행 하기 !!
[원인]
- 지속적인 데이터 변경 작업에 따라 반복되는 페이지 분할의 문제로 인해 인덱스 조각화가 발생
- 해당 원인으로 성능 저하가 되며 인덱스 조각모음을 통해 다시 작성 해서 조각화를 제거 한다
[확인]
- 인덱스 리빌드 대상을 확인
SELECT DB_NAME() AS 'DatabaseName'
, OBJECT_NAME(S.OBJECT_ID) AS 'TableName'
, I.NAME AS 'IndexName'
, ROUND(AVG_FRAGMENTATION_IN_PERCENT, 2) AS 'AVGT %'
FROM SYS.DM_DB_INDEX_PHYSICAL_STATS(DB_ID(),NULL,NULL,NULL,NULL) AS S
INNER JOIN SYS.INDEXES AS I
ON S.OBJECT_ID = I.OBJECT_ID AND S.INDEX_ID = I.INDEX_ID
WHERE S.DATABASE_ID = DB_ID()
AND I.NAME IS NOT NULL -- HEAP은 무시
AND OBJECTPROPERTY(S.OBJECT_ID, 'IsMsShipped') = 0
ORDER BY [AVG %] DESC
> AVG_FRAGMENTATION_IN_PERCENT 값이 0에 가까울수록 조각화가 일어나지 않음.
[해결]
1. 특정 인덱스 만 다시 구성 할 경우
- [리빌드 하고자 하는 인덱스 선택] > [오른쪽마우스 클릭] > [다시 구성 클릭]
- [인덱스정보 확인] > [총 조각화 수치 확인]
ㅋ
- [확인 클릭] > [인덱스 재구성 진행 확인]
- [진행 완료 후 조각화 수치 확인]
728x90
'DBMS > MSSQL' 카테고리의 다른 글
[MSSQL] 로그온 트리거 (Login Trigger) (0) | 2023.09.21 |
---|---|
[MSSQL] 메시지 3702, 수준 16, 상태 3, 줄 1Cannot drop database "database name" because it is currently in use. (0) | 2023.05.04 |
[MSSQL] DB(Database) 전체 백업, 데이터베이스 Full BackUp (0) | 2023.02.14 |
[MSSQL] Identity 초기화 (DBCC CHECKIDENT) (0) | 2023.01.16 |
[MSSQL] 데이터베이스 (DB) 백업 압축 설정 (0) | 2023.01.13 |