본 논문 에서 저 는 SQL Server 의 도구 로 데이터베이스 색인 의 사용 을 최적화 하 는 방법 을 설명 할 것 입 니 다.본 고 는 색인 과 관련 된 일반적인 지식 도 포함 되 어 있 습 니 다.색인 에 대한 상식 이 데이터베이스 성능 에 영향 을 미 치 는 가장 큰 요 소 는 색인 이다.이 문제 의 복잡성 때문에 나 는 단지 이 문 제 를 간단하게 이야기 할 수 있 을 뿐 이지 만,이 방면 의 문제 에 관 해 서 는 현재 너 에 게 참고 할 수 있 는 몇 권 의 괜 찮 은 책 이 있다.나 는 여기에서 두 가지 SQL Server 색인,즉 clustered 색인 과 nonclustered 색인 만 토론 합 니 다.어떤 종류의 색인 을 만 드 는 지 살 펴 볼 때 데이터 형식 과 이 데 이 터 를 저장 하 는 column 을 고려 해 야 합 니 다.마찬가지 로 데이터 베 이 스 를 사용 할 수 있 는 조회 유형 과 가장 자주 사용 하 는 조회 유형 도 고려 해 야 한다.색인 형식 은 column 이 고도 와 관련 된 데 이 터 를 저장 하고 순서대로 접근 할 때 clustered 색인 을 사용 하 는 것 이 좋 습 니 다.clustered 색인 을 사용 하면 SQL Server 는 물리 적 으로 오름차(기본 값)나 내림차 순 으로 데이터 열 을 다시 배열 하기 때문에 조 회 된 데 이 터 를 신속하게 찾 을 수 있 습 니 다.마찬가지 로 검색 제어 가 일정한 범위 내 에서 이 column 에 대해 서도 clustered 색인 을 사용 하 는 것 이 좋 습 니 다.물리 적 으로 데 이 터 를 다시 배열 하기 때문에 표 마다 하나의 clustered 색인 만 있 기 때문이다.위의 상황 과 달리 columns 에 포 함 된 데이터 의 상관 성 이 떨 어 지면 nonculstered 색인 을 사용 할 수 있 습 니 다.너 는 한 표 에서 249 개의 nonclustered 색인 을 사용 할 수 있다.비록 나 는 실제 응용 장소 에서 이렇게 많은 색인 을 사용 할 것 이 라 고 상상 할 수 없 지만.표 에서 주 키워드(primary keys)를 사용 하면 기본적으로 SQL Server 는 이 키 워드 를 포함 하 는 column(s)에 대해 고유 한 cluster 색인 을 자동 으로 만 듭 니 다.이러한 column(s)에 대한 고유 색인 을 만 드 는 것 은 주 키워드 의 유일 성 을 의미 하 는 것 이 분명 하 다.외부 키워드(foreign key)관 계 를 만 들 때 자주 사용 하려 면 외부 키워드 cloumn 에 nonclustered 색인 을 만 드 는 것 이 좋 은 방법 입 니 다.표 에 clustered 색인 이 있 으 면 데이터 페이지 간 의 관 계 를 하나의 링크 로 유지 합 니 다.반면 표 에 clustered 색인 이 없 으 면 SQL Server 는 스 택 에 데이터 페이지 를 저장 합 니 다.데이터 페이지 는 색인 이 만들어 질 때 SQLServer 는 데이터 페이지(datapage)를 만 들 고 데이터 페이지 는 검색 을 가속 화 하 는 지침 입 니 다.색인 이 만 들 어 졌 을 때 해당 하 는 충전 인자 도 설정 되 어 있 습 니 다.충전 인 자 를 설정 하 는 목적 은 이 색인 에서 데이터 페이지 의 백분율 을 표시 하기 위해 서 입 니 다.시간 이 지 날수 록 데이터 베 이 스 를 업데이트 하면 기 존의 빈 공간 이 소모 되 고 페이지 가 분 리 될 수 있 습 니 다.페이지 분할 의 결 과 는 색인 의 성능 을 떨 어 뜨 렸 기 때문에 이 색인 을 사용 한 조 회 는 데이터 저장 의 지리멸렬 을 초래 할 수 있다.색인 을 만 들 때 이 색인 의 충전 인 자 는 설정 되 어 있 기 때문에 충전 인 자 는 동적 으로 유지 할 수 없습니다.데이터 페이지 의 충전 인 자 를 업데이트 하기 위해 서 는 기 존 색인 을 중단 하고 색인 을 재 구축 하 며 충전 인 자 를 다시 설정 할 수 있 습 니 다.DBCC INDEXDEFRAG 와 DBCC DBREINDEX 는 clustered 와 nonculstered 색인 조각 을 제거 하 는 두 명령 이다.INDEXDEFRAG 는 온라인 작업(즉,검색 과 같은 다른 표 동작 을 막 지 않 는 다 는 것)이 고,DBREINDEX 는 물리 적 으로 색인 을 재 구축 합 니 다.절대 다수의 경우 색인 을 재 구축 하면 조각 을 더 잘 제거 할 수 있 지만 이 장점 은 현재 이 색인 이 있 는 표 에서 발생 하 는 다른 동작 을 차단 하 는 대가 로 바 꿀 수 있다 는 것 이다.큰 조각 색인 이 나 올 때 INDEXDEFRAG 는 비교적 긴 시간 을 투자 합 니 다.이 명령 의 실행 은 작은 인 터 랙 션 블록(transactional block)을 기반 으로 하기 때 문 입 니 다.인 자 를 채 우 는 것 은 상기 조치 중 하 나 를 실행 할 때 데이터베이스 엔진 은 색인 에 편 입 된 데 이 터 를 더욱 효과적으로 되 돌려 줄 수 있 습 니 다.충전 인자(fillfactor)에 대한 화 제 는 본문의 범 위 를 넘 어 섰 지만,충전 인 자 를 사용 하여 색인 을 만 들 려 는 표 에 주의해 야 한 다 는 것 을 알려 드 립 니 다.검색 을 실행 할 때 SQL Server 동적 으로 어떤 색인 을 사용 할 지 선택 합 니 다.이 를 위해 SQL Server 는 각 색인 에 분포 되 어 있 는 통 계량 에 따라 어떤 색인 을 사용 할 지 결정 합 니 다.주의해 야 할 것 은 일상적인 데이터 베이스 활동(예 를 들 어 표 삽입,삭제,업데이트)을 통 해 SQL Server 가 사용 하 는 이러한 통 계량 은 이미 기한 이 지 났 을 수 있 으 므 로 업데이트 가 필요 하 다 는 것 이다.DBCC SHOWCONTIG 를 실행 함으로써 통 계량 의 상 태 를 볼 수 있다.통 계량 이 만 료 되 었 다 고 생각 할 때 이 표 의 UPDATE STATISTICS 명령 을 실행 하면 SQL Server 가 이 색인 에 대한 정 보 를 새로 고 칠 수 있 습 니 다.데이터베이스 유지보수 계획 을 세 우 는 SQL Server 는 데이터 베 이 스 를 간소화 하고 자동 으로 유지 하 는 도 구 를 제공 합 니 다.데이터베이스 유지보수 계획 마법사(Database Maintenance Plan Wizard,DMPW)라 는 도구 에 도 색인 최적화 가 포함 되 어 있다.이 마법 사 를 실행 하면 데이터베이스 에 있 는 색인 에 대한 통 계량 을 볼 수 있 습 니 다.이 통 계량 들 은 로그 작업 으로 정기 적 으로 업데이트 되 어 수 동 으로 색인 을 재 구축 하 는 작업량 을 줄 일 수 있 습 니 다.자동 으로 정기 적 으로 색인 통 계량 을 새로 고치 지 않 으 려 면 DMPW 에서 데이터 와 데이터 페이지 를 재 구성 하 는 것 을 선택 할 수 있 습 니 다.이 는 기 존 색인 을 중단 하고 특정한 충전 인자 에 따라 색인 을 재 구성 할 수 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다: