데이터베이스 설정 , 시스템 설정 파트 저자로 참여 하였습니다.
더 잘쓰지 못한게 많이 아쉽네요^^
DB 성능 향상을 위한
SQL Server 운영과 튜닝
SQLTAG 저 | 936쪽 | 35,000원 | 978-89-314-4242-7 | 2012년 4월 17일 | 영진닷컴
:: 책 소개
이 책은 마이크로소프트의 SQL Server를 효율적으로 운영하기 위해 필요한 내용들을 담고 있습니다. 초반부에는 시스템 설정에서부터 백업 및 데이터 전송 최적화와 관련된 내용을 다루고 있습니다. 그리고 중반부에는 액세스 패턴과 파티션, 조인, 잠금 등 튜닝에 필요한 기초 내용과 데이터 분석 툴과 실전 튜닝에 대해 설명하고 있습니다. 그리고 후반부에는 장애 조치 클러스터와 미러링, 로그 전달과 BI에 대한 내용들을 설명하고 있습니다.
:: 출판사 리뷰
“국내 현업 DBA들이 전하는 SQL Server 운영과 튜닝의 노하우!”
데이터 생산량이 기하급수적으로 늘어나면서 효율적인 데이터베이스 시스템 관리는 IT 업계에서는 필수 요소로 자리잡게 되었습니다. 그래서 이 분야에 종사하는 사람들과 앞으로 진출하려는 사람들에게는 이러한 시스템을 관리하는 방법과 문제가 발생했을 때 해결책을 다루는 도서의 필요성이 절실했습니다.
이 책은 국내에 있는 DBA들이 현장에서 직접 체험하고 끊임없이 연구한 성과들을 토대로 구성되어 있습니다. 풍부한 예제와 함께 튜닝과 고가용성 관련 내용을 비롯한 실무 관련 내용들을 현장감 있게 다루고 있어 외국 원서나 번역서에서만 의지하던 실무자들에게는 유용한 해법을 제공합니다. 그리고 데이터베이스를 공부하는 독자들에게는 효율적인 시스템 관리를 위한 방향을 제시합니다.
진화는 생물에게만 해당되는 것이 아닌 듯 합니다. 1998년 SQL6.5로 서비스를 구축 운영한 적이 있는데, 돌아보니 현재의 SQL Server 2008이 현생 인류라면 당시는 네안데르탈인 정도 될 것 같군요. 그만큼 용량, 안정성, 고가용성, 성능 등 모든 부분에서 경쟁자와 겨룰 수 있을 정도로 현격히 진화하였다고 생각합니다. 한국데이터베이스진흥원의 2011. 12일자 보고에 의하면 DB관련 시장은 최근 4년간 연평균 약 10% 성장, DB 관련 인력도 전년 대비 5.3% 증가하였다고 하며 MS SQL Server도 지난 6개월간 두 자리수 성장률을 기록하고 있습니다. 이즈음에 출간되는 이 책은 10여년의 DBA 및 기술지원 엔지니어 경험으로 살펴봤을 때 한층 진화한 SQL Server 2008의 A to Z를 충실히 담고 있는 실용서이면서 또한 내부 원리의 설명을 통해서 호기심을 해결해 줄 수 있다는 점에서 강력히 추천하고 싶습니다.
-마이크로소프트 기술지원부 Developer Support 팀장 최승완-
:: 이 책의 구성
Part 1. Maintenance
SQL Server를 이용해 데이터베이스 서버를 구성함에 있어 기본적인 설정에 대한 내용들을 다룬다. 그리고 SQL Server의 메모리와 데이터베이스 백업 및 복원, 데이터 전송 최적화에 대해서도 설명한다.
Part 2. Performance Tuning
액세스 패턴, 조인 특성, 병렬 처리, 파티션, 잠금, 대기분석, 성능 카운터에 대해서 다루었다. 마지막으로는 실전 튜닝 예제를 통해 독자가 현상을 재현해볼 수 있도록 했다.
Part 3. High Availability
고가용성을 위한 SQL Server가 지원하는 기능을 다루고 있다. 마이크로소프트 장애 조치 클러스터, 미러링과 로그 전달에 대해 설명하고 있다.
Part 4. BI
여기서는 크게 SSIS와 SSAS에 대해서만 다룰 것이다. SSIS에서는 구축 전에 준비 작업과 구축 후 성능 최적화에 대해서 다루었다. SSAS는 다양한 사례에 대해서 대처하는 방법 및 성능 튜닝과 운영에 대해서 설명한다.
처음 정규화 이론이 만들어지고 DBMS가 상용화하여 지금까지 40여년의 세월이 흘렀습니다. FILE DB에서 출발하여 Facebook, Twitter 등 SNS 빅데이터까지 많은 변화가 있었습니다. 수많은 비즈니스적 요구를 해결할 수 있도록 기술도 변화하고 발전했으며 그 관련 개발자들도 그렇게 변화하고 발전했을 것입니다. 또한 사회의 발전과 마케팅의 발전으로 점점 Database는 대용량화 되어가고 분석의 기술도 날이 다르게 발전하고 있습니다. 사회의 변화, 기술의 변화가 급격하더라도 DB에 대한 기본을 이해하고 구축하면 더욱 견고하고 안정적인 시스템을 구축할 수 있으며, 다양한 분석의 기법으로 체계적으로 데이터를 관리 분석할 수 있으리라 생각합니다.
이 시점에서 아래와 같은 질문들을 스스로에게 해보십시오. DBMS를 어떻게 설정해야 할까요? MSSQL로 무엇을 할 수 있을까요? 그리고 어떤 부분을 점검하고 성능을 측정할 수 있을까요? 데이터를 어떻게 분석해야 할까요?
질문이 너무 고전적인가요? 그러나 업무의 현장이나 세미나, 커뮤니티의 질문을 요약하면 대부분 위의 질문으로 분류가 됩니다. 사회의 변화, 기술의 변화에도 우리의 질문은 변함이 없는 것 같습니다. Database를 다루면서 생겼던 무수한 질문들과 에러를 어떻게 해결하고 계시나요? 흔히들 가까이에 있는 동료들에게 질문하거나 커뮤니티나 세미나, 교육으로 해결하기도 합니다. 다행이 잘 해결될 때도 있지만 하나를 앎으로써 다시 의문이 생길 때도 있습니다. 이 책 또한 그러한 의문에서 시작하여 만들어진 결과입니다. 저도 같은 일을 하는 입장에서 여러 후배들의 노력이 느끼지는 책이라 형용할 수 없는 감동을 받았습니다. DB를 다루고자 하는 분, 그리고 더 견고한 시스템을 구축하고자 하시는 분들에게 이 책은 자상한 선배같이 느껴질 것으로 여깁니다. 책을 쓴 저자들의 노고에 박수를 보내며 앞으로 우리의 질문이 한층 더 업그레이드되길 바랍니다.
-SK C&C DATA ARCHITECT 과장 김종열-
:: 대상 독자층
- SQL Server를 사용하는 DBA
- 프로그래머 혹은 SQL Server에 관심있는 타 DBMS 관리자
- 데이터베이스 관련 분야 전공자
:: 저자 소개
SQLTAG(http://www.sqltag.org)
SQLTAG는 'By Design&Bug 외에 우리가 해결하지 못하는 이슈는 없다!'라는 취지로 현업 DBA, 개발자들이 모여 결성된 스터디 & 컨설팅 그룹이며 온/오프라인으로 여러 DBA, 개발자들과 즐겁게 SQL Server를 공부하는 모임이다.
SQL Server와 관련된 전반적인 기술과 내부 동작 원리까지 분석하는 등 초급부터 최고급 기술까지 두루 다루고 있으며 전문가들로 구성된 컨설팅팀이 무료 컨설팅을 수행하고 있다.
처음 SQL Server를 접했을 때 실무에 직접 참고할 책도 별로 없었고, 또 깊이 있는 책들은 모두 원서이고 번역본이었습니다. 다년간 무료 DB 컨설팅과 정보 공유 등을 진행한 SQLTAG 커뮤니티에서 이 책을 집필하게 되어 반갑습니다. 지난날 Inside SQL Server 시리즈를 보고 해외 원서와 번역서를 보면서 그 내 용의 깊이와 정보에 부러움을 느낀 날이 있었습니다. 이 책이 해외 서적의 번역본이 아닌 창작으로 Inside SQL Server 시리즈와 견주어도 부족할 것 없는 내용으로 출판되어 더욱 더 기쁜 마음입니다. 책에 수록된 내용이 SQLTAG 커뮤니티의 구성원들이 수년간 커뮤니티 게시판과 오프라인 스터디에서 공유되고 실무 업무를 진행하면서 습득한 이슈(Issue)와 그 해결책들을 공개하는 것이기에 다른 어떤 책보다도 실무를 진행하는 개발자들에게 유용할 것으로 기대됩니다. Microsoft SQL Server 2012가 공식발매 되기 전 현재 가장 최신 버전인 Microsoft SQL Server 2008 R2의 최신의 정보로 구성된 것 또한 향후 해당 버전을 도입하는 기업이나 도입을 고려하는 개발자에게 도입 전 미리 내용을 숙지함으로써 시행착오를 겪지 않게 도움을 줄 것입니다.
“툴을 이용한 분석”에서 소개하는 각종 무료 진단 툴(Perfmon, SQL Server 프로파일러, ReadTrace, SQLDiag / PSSDiag와 Diag Manager, SQL Nexus, SQLIOSim, OStress, DTCPing/DTCTester Netmon)의 사용법에 대한 정리는 작은 사이트에서부터 대규모의 데이터베이스 개발자에게 진단과 문제가 발생하기 전에 고려할 사항과 발생 후에 진단할 포인트를 알려주고 있습니다.
여러 장에서 설명하고 있는 클러스터링(Clustering), 미러링(Mirroring), 복제(Replicate), 로그쉬핑(Log Shipping) 등의 내용과 예제 화면을 포함한 설명은 실무 개발자에게 보다 친밀하게 이해를 도울 것입니다.
-씨제이아이지 DB 팀장 최석준-
:: 목차
Part 1. Maintenance
Chapter 01. 시스템 설정
01. CPU
1.1 하이퍼 스레드와 전원 사용 계획
1.2 프로세서 사용 확인
02. 메모리
2.1 메모리 사용 계획
2.2 Lock Pages In Memory 옵션
2.3 페이징 파일 위치
03. 디스크
3.1 Disk Partition Alignment
3.2 디스크 구성 전략
04. MS-DTC 설정
4.1 DTC 설정
05. 네트워크(NIC) 설정
5.1 전원 관리 설정
06. SynAttackProtect 설정
07. 바이러스 백신 및 침입탐지 소프트웨어
Chapter 02. SQL Server 설정
01. 서비스 팩, 핫픽스, 기타 업데이트 설치
1.1 SQL Server 버전 확인
1.2 기본 디렉토리 설정
02. SQL Service 설정
03. 서비스 시작 계정 최소화 설정
3.1 SQL Server 서비스용 계정 생성
3.2 SQL Server 설치 서비스 계정 설정
3.3 SQL 로그인 계정 설정
3.4 SQL 계정 삭제
3.5 관리자용 계정 생성
3.6 SQL Server 서비스 시작 계정 등록
3.7 SQL Server 서비스 계정 그룹 추가
3.8 데이터 파일 즉시 초기화 SQL Server 계정 추가
04. SQL Server Error Logs 설정 및 SQL Server Agent Logs 설정
4.1 SQL Server Error Logs 설정
4.2 SQL Server Agent Logs 설정
4.3 SQL Server Error 로그 및 SQL Server Agent 로그 확인
05. Min / Max server memory 설정
06. 추적 플래그 설정
6.1 SQL Server 시작 매개변수 설정
07. 포트 변경 및 서버 Alias 사용
7.1 SQL Server NIC 카드의 모든 IP에 포트 변경
7.2 SQL Server NIC 카드의 각각 IP에 포트 변경
7.3 SQL Server Alias 설정
7.4 64bit SQL Alias 설정시 주의 사항
08. SQL Server 2005 이상에서 관리자 연결(DAC) 사용
8.1 SQLOMD 및 OSQL 명령어 접속 방법
09. SQL Server 구성 옵션 관리
9.1 전체 구성 옵션 확인하기
9.2 특정 구성 옵션 확인&변경
9.3 SQL Server 2008 구성 옵션
Chapter 03 데이터베이스 설정
01. SQL Server 데이터베이스 용량 설정
1.1 데이터베이스 최대 크기 설정
1.2 데이터베이스 파일 자동 증가 설정
1.3 데이터베이스 파일 그룹 설정
02. SQL Server 인스턴스 기본 데이터베이스 설정
03. tempdb 설정
Chapter 04. SQL Server 메모리
01. SQL Server 메모리 이해하기
1.1 SQL Server 메모리 작동 방식
1.2 32비트 시스템 메모리 특징
1.3 메모리 설정을 해야하는 이유
02. 메모리 설정 옵션들
2.1 부팅 옵션
2.2 시스템 옵션
2.3 SP_CONFIGURE 옵션
2.4 Trace flag 옵션
03. Min / Max 메모리 설정하기
3.1 메모리 크기 별 권장 메모리 설정
3.2 메모리 크기와 사용량 분석
3.3 메모리 설정 예제
Chapter 05. 데이터베이스 백업과 복원
01. 백업의 유형
1.1 전체(Full) 백업
1.2 차등(Differential) 백업
1.3 트랜잭션 로그 백업
1.4 파일 및 파일 그룹 백업
1.5 부분 백업
1.6 차등 부분 백업
1.7 복사 전용 백업
1.8 미러된 백업
02. 복구 모델의 이해
2.1 단순 복구 모델
2.2 대량 로그 복구 모델
2.3 전체 복구 모델
03. 주요 데이터베이스 백업과 복원 활용
3.1 전체 데이터베이스 백업과 복원
3.2 데이터베이스 차등 백업과 복원
3.3 트랜잭션 로그 백업과 복원
3.4 특정 시점(Point in time) 복원
3.5 다중 장치 분산 백업과 복원
3.6 단계별(Piecemeal) 복원
3.7 비상 로그(Tail-log) 백업을 통한 복원
04. 백업 압축 기능
4.1 백업 압축 개요
4.2 일반 백업과 백업 압축 비교
Chapter 06. 데이터 전송 최적화
01. 최소 로깅(Minimal logging)과 복구 모델
02. SELECT INTO와 INSERT SELECT
03. 시나리오별 트랜잭션 로그 기록 테스트
04. TF610(Trace flag 610)
05. 복구 모델의 변경
5.1 단순 복구 모델로 변경
5.2 대량 로그 복구 모델로 변경
06. 인덱스
07. 데이터 전송 명령들
7.1 BULK INSERT
7.2 BCP
7.3 SSIS
7.4 SELECT INTO, INSERT SELECT
Part 2. Performance Tuning
Chapter 07. 쿼리 튜닝의 기본
01. 데이터 액세스
1.1 데이터 저장 단위
1.2 테이블과 인덱스 구조
02. 액세스 패턴
2.1 용어 설명
2.2 액세스 패턴의 종류
2.3 액세스 전략
03. 조인의 종류와 특징
3.1 중첩 루프 조인(Nested Loop Join)
3.2 머지 조인(Merge Join)
3.3 해시 조인(Hash Join)
3.4 APPLY
3.5 행 크기 제한과 조인
04. 병렬 처리
4.1 병렬 처리 개념과 처리 순서
4.2 소프트 NUMA 설정
4.3 설정 확인
4.4 병렬 처리의 성능 분석 예제
05. 파티션
5.1 파티션 테이블 개념
5.2 자주 활용되는 파티션 기술 및 이해
06. 잠금
6.1 잠금(Lock)이란?
6.2 잠금의 격리 수준
6.3 잠금 승격
6.4 교착 상태(Deadlock)
6.5 잠금의 해결 방안들
07. 대기 분석
7.1 대기 유형
7.2 대기 분석 예제
7.3 대기 진단용 프로시저
7.4 대기 진단용 확장 프로시저
Chapter 08 툴을 이용한 분석
01. Perfmon
1.1 Perfmon의 사용 방법
1.2 Perfmon을 이용한 성능 데이터 수집
02. SQL Server 프로파일러
2.1 SQL Server 프로파일러 사용 방법
2.2 쿼리를 이용한 이벤트 추적 사용
2.3 SQL Server 프로파일러와 Perfmon 데이터의 교차 분석
03. ReadTrace
3.1 ReadTrace의 설치
3.2 ReadTrace의 사용 방법
3.3 ReadTrace를 이용하여 문제 상황 분석 예제
04. SQLDiag/PSSDiag와 Diag Manager
4.1 Diag Manager의 각 영역별 설명
4.2 Diag Manager를 이용해 SQLDiag 파일 생성
4.3 SQLDiag 수집
05. SQL Nexus
5.1 SQL Nexus의 사용 방법
06. SQLIOSim
6.1 SQLIOSim 다운로드
6.2 SQLIOSim의 사용 방법
07. OStress
7.1 OStress의 사용 방법
08. DTCPing / DTCTester
8.1 DTCPing
8.2 DTCTester
09. Netmon(Network Monitor)
9.1 Netmon의 설치
9.2 Netmon의 사용 방법
Chapter 09 실전 쿼리 튜닝
01. 논리적 읽기 수
02. 형 변환
2.1 예제 1 살펴보기
2.2 예제 2 살펴보기
2.3 예제 3 살펴보기
03. 실행 계획의 비용 비교
04. 실행 계획 캐시 영향도
4.1 첫 번째 사례 살펴보기
4.2 두 번째 사례 살펴보기
05. 통계 불량
5.1 예제를 통한 이해
5.2 예측 가능한 성능 구현을 위한 적용 방법
06. 외래키
6.1 개요
6.2 예제를 통한 이해
07. 제약 조건
7.1 DISTINCT 쿼리
08. 인라인 뷰(Inline View)
8.1 뷰 병합 이슈
8.2 WHERE 절의 순서 문제
09. CPU
9.1 CPU 이슈 1
10. MEMORY
10.1 Memory 이슈
10.2 예제 실습
11. DISK
11.1 64KB I/O vs 8KB I/O
11.2 스토리지 관련 모든 최적화 제거
11.3 Optimized 성능 측정
11.4 OPTIMIZED & UNORDERED PREFETCH
11.5 병렬 제거 & UNORDERED PREFETCH & 명시적 SORT
11.6 병렬 & UNORDERED PREFETCH & 명시적 SORT
Part 3. High Availability
Chapter 10. 마이크로소프트 장애 조치 클러스터
01. 장애 조치 클러스터
1.1 사용 목적과 다른 솔루션과의 차이점
1.2 서버 클러스터 구현 모델
02. 설치 전 준비사항
2.1 구성 가능 환경
2.2 장애 조치 클러스터 프로세스
2.3 구성 정보 워크시트
2.4 iSCSI Software Target을 이용한 SAN 스토리지 구성
2.5 네트워크 구성
2.6 도메인 사용자 설정
03. 구축
3.1 시스템 준비 도구(Sysprep, System Preparation)
3.2 1+0 액티브/패시브
3.3 1+1 액티브/액티브
04. Slipstream을 이용한 설치 파일 만들기
4.1 Slipstream의 사용 방법
4.2 명령 프롬프트에서 SQL Server 2008 R2 설치
Chapter 11. 미러링(Mirroring)
01. 구성과 특징
1.1 사용 목적
1.2 운영 모드
1.3 동작 방식
02. 가용성 시나리오
03. 구축 전 준비사항
3.1 구성을 위한 준비
04. 구축
4.1 2008 R2 모니터링 서버가 없는 미러링 구축
4.2 2008 R2 모니터링 서버가 있는 미러링 구축
4.3 2008 R2 T-SQL로 미러링 구성하기
4.4 2008 R2 인증키 로그인 방식을 이용한 미러링 구축
4.5 SQL Server Denali에서의 미러링 구축
05. 운영시 고려사항
5.1 장애 유형 및 해결 방안
5.2 성능 모니터링을 통한 데이터베이스 상태 확인
5.3 프로파일링 이벤트
06. 활용
6.1 버전 업그레이드 및 패치
6.2 단일 데이터베이스 failover시 전체 데이터베이스 failover시키기
07. 예제 애플리케이션 실습
08. 더 높은 가용성을 위한 복합 구성
8.1 미러링+로그 전달
8.2 미러링+복제
09. 제거
Chapter 12. 복제(Replication)
01. 사용 목적과 복제 유형
1.1 사용 목적
1.2 복제 유형
1.3 운영 모드와 환경
02. 가용성 시나리오
2.1 중앙 게시자 모델
2.2 중앙 구독자 모델
2.3 피어 투 피어(Peer To Peer) 모델
03. 설치 전 준비사항
3.1 개요 및 주요 고려 사항
3.2 스냅숏 복제에 대한 고려 사항
3.3 트랜잭션 복제에 대한 고려 사항
3.4 병합 복제에 대한 고려 사항
04. 구축
4.1 스냅숏 복제
4.2 트랜잭션 복제
4.3 병합 복제
05. 운영시 고려사항
5.1 장애 유형 및 해결 방안
5.2 복제 모니터링
5.3 성능 모니터링을 통한 복제 상태 확인
5.4 프로파일러를 통한 모니터링
06. 활용
6.1 아티클 추가하기
07. 제거
7.1 SSMS를 이용한 제거
7.2 T-SQL을 이용한 제거
Chapter 13 로그 전달(Log Shipping)
01. 다양한 구성과 특징
1.1 사용 목적
1.2 로그 전달 상세 동작 방식
02. 구축 전 준비 사항
2.1 준비 작업
03. 구축
3.1 모니터링 없는 로그 전달 구성
3.2 모니터링 서버를 포함한 로그 전달
3.3 T-SQL로 구성
04. 운영시 고려사항
4.1 장애 유형 및 해결 방안
4.2 오류 케이스
4.3 모니터링 정보 테이블 살펴보기
4.4 로그 전달 보고서
05. 로그 전달 업데이트
5.1 SQL Server 2000→SQL Server 2008 R2 업그레이드
5.2 SQL Server 2005→2008 R2 업그레이드(단일 보조 서버 구성)
5.3 SQL Server 2005→2008 R2 업그레이드(여러 보조 서버가 있는 구성)
5.4 주 서버와 보조 서버의 역할 전환
06. 고가용성을 위한 복합 구성
6.1 설정에 따른 구성 방법
6.2 복합 구성에서의 장애 조치
07. 제거
7.1 SSMS로 제거하기
7.2 T-SQL로 제거하기
Part 4. BI
Chapter 14. SSIS
01. DW를 위한 시스템 설정
02. SSIS 소개와 특징
2.1 SSIS 살펴보기
2.2 주요 특징
03. 패키지
3.1 부모, 자식 패키지
3.2 패키지 프레임워크의 필요성
3.3 패키지 프레임워크의 구성
3.4 패키지 환경 설정
3.5 자식 패키지 호출
3.6 ODS(META) 변경 감지
3.7 패키지 로깅
3.8 패키지 탬플릿 등록
04. 이관
4.1 대용량 이기종 이관
4.2 데이터 이관 작업 최적화
Chapter 15. SSAS
01. 일반적으로 나쁜 구성의 예
1.1 경고 사인을 무시하고 어떻게 여기까지 왔을까?
1.2 대형 차원의 문제
1.3 큰 고유 카운트 측정값 그룹
1.4 다대다 차원의 문제
1.5 부모/자식 차원의 문제
1.6 파티션의 문제
1.7 ROLAP 처리의 문제점
1.8 프로세싱(팩트 차원 집계 처리)
02. 고성능 처리 방안(튜닝)
2.1 SSAS 파티션 처리시 RDB와의 설정을 고려한 처리 방안
2.2 다중 사용자 설정
2.3 <PreAllocate>
2.4 BufferMemoryLimit 및 Merging
2.5 Connection Setting
2.6 로컬 SQL Server 데이터 원본에 대한 공유 메모리를 사용
2.7 Data와 Index를 나누어 처리
2.8 큐브 이중화
2.9 캐시 Warm
2.10 ASSP & 연결된 서버
2.11 사용 빈도 기반 최적화