MyNote_SQL Server 2000/2005 튜닝 (전문가로 가는 지름길 3) Work/Etc2010. 9. 10. 10:20
제목 : SQL Server 2000/2005 튜닝 (전문가로 가는 지름길 3)
저자 : 정원혁, 손광수
1장 왜? - 튜닝의 목적
Monitor를 하고, Baseline을 확보해라
APP tune > Database tune > SQL Server tune > Windows Server tune > H/W tune
성능목표를 구체적으로 수치적으로 설정한다.
2장 튜닝을 위한 도구
1. 프로필러 : 기본. read80trace로 report
2. 기타 모니터 및 튜닝 도구 : ?
3. 이벤트 뷰어 :
4. 성능 모니터 : perfmon
5. 쿼리 분석기 : Explain plan, Set Statistics IO
6. 엔터프라이즈 관리자
7. T-SQL :
sp_who, sp_who2, sp_lock, sp_block, sp_monitor, sp_spaceused, sp_statistics, sp_help
@@spid, @@cpu_busy, @@connections, @@error, @@procid
set statistics io, set statistics time, set showplan_text, set showplan_all, set statistics profile
DBCC - help, traceon/traceoff/tracestatus, sqlperf(logspace/iostats/lrustats/netstats)
, opentran, checkdb, inputbuffer/outputbuffer, proccashe, showcontig, show_statistics
, useroptions, dllname(free), indexdefrag, pintable/unpintable, dropcleanbuffers, freeproccache
추적플래그 - 3604/3605, 1204, 2528, 3205
SQLDIAG
8. 스트레스 테스트 도구
로드 시뮬레이터, sql과 batch 명령, OSTRESS
3장 물리적 데이터베이스 아키텍처
1. SQL Server 아키텍처
2. 데이터베이스 옵션과 성능
보통 1/5 정도 변경될 즈음에 자동 통계 갱신이 발생한다. -> 정말??
정말 auto create statistics, auto update statistics 를 과연 활성화 해야 하는가?
3. 가상 로그 파일 최소화
VLF(virtual log file) 개수를 작게, 크기를 크게 생성.
4. 익스텐트 할당 및 빈 공간관리
8K(8192 Byte) = 1 Page, 8 page = 1 extent
GAM(gloval allocation map) : 어떤 익스텐트가 할당된었는지 관리
SGAM(shared gloval allocation map) : 어떤 익스텐트가 현재 혼합 익스텐트로 사용되고 있는지와 빈페이지를 가지는지 관리
DB의 파일 개수를 늘려주면 SGAM에 대한 요구가 분산되어 보다 좋은 성능을 기대할 수 있다.(tempdb)
PFS (page free sapce), BCM(Bulked Change Map), DCM(Differential Change Map)
IAM(Index Allocation Map) 파일의 익스텐트를 매핑.
5. 페이지 구조
6. 행 구조
7. 행의 관리
클러스터 인덱스에 삽입할 경우 페이지 분할 가능성 존재.
인덱스에서 행 삭제 : ghost record
행의 이동 : Forword record->클러스터 인덱스 생성해라...
Inplace update / non inplace update
8. 자료형과 성능
4장 인덱스 기초
1. 인덱스 개요
0.64% 이하의 경우에는 Index seek.
-> 과연 신뢰할 수 있는가??
2. 인덱스 조각 모음/재구성
3. 데이터베이스 유지 관리 계획 마법사
4. 통계
5장 인덱스 활용
1. 인덱스 만들기 옵션
2. 복합 인덱스
3. 커버된 인덱스
조합 인덱스와 비교시 장점이 있는가?
4. 인덱스 교집합
둘 이상의 인덱스를 동시에 사용해서 인덱스 교집합을 만드는 기능
5. 인덱스 튜닝 마법사
6. 인덱스 업데이트 성능
7. 인덱스 힌트
8. 인덱스 설정 지침
9. 사례 연구
6장 최적화기
1. 최적화기 소개
가장 좋은 실행계획은 만드는 것이 아니라 그 정도면 충분한 실행계획을 생성.
Parsing->standardization->Optimization->Compilation->Execute
2. 쿼리 플랜 살펴보기
3. 조인의 이해
4. 기타 실행 계획
5. 쿼리 플랜 - 실제 동작 분석
6. 최적화기 힌트
조인 힌트, 쿼리 힌트, 테이블 힌트
7. 최적화 관련 점검
7장 트랜잭션 잠금 - 기초
1. 개요
2. 잠금 정보 얻기
동적잠금과 잠금 승격 : MS에서는 전체 메모리의 40% 수준에서 잠금 승격이 발생한다고 말한다.
3. 잠금의 크기
4. 잠금의 호환성
5. 격리 수준
Lost update, Dirty read, non-repeatable read, phantom read
8장 트랜잭션과 잠금 - 활용
1. 낙관적/비관적 동시성
2. 잠금의 세기
3. 특수 잠금
4. 잠금 정보 얻기
5. 차단
6. 교착 상태
7. 기타
9장 함수와 프로시저
1. 함수
2. 저장 프로시저 개요
3. 매개 변수 스니핑
4. 자동 매개 변수화
5. 프로시저 재 컴파일
6. 다목적 프로시저
7. 권장 지침
8. 프로시저 템플릿 예제
9. 시스템 프로시저 만들기
10. 디버깅
11. 뷰와 파티션된 뷰
12. 기타
10장 커서
1. 개요
2. 성능 관련
3. 커서 예제
4. 커서 제거
5. 정규화와 커서
6. 참고 자료