개인적으로 사고 싶지만, mysql을 잘 안하고 있는데다가, 이번달에 이미 산 책들이..ㅠ.ㅠ
(요즘 전 noSQL에 꽂혀 있습니다.)
 |
1장 MySQL 아키텍처
MySQL의 논리적 아키텍처 - 연결 관리와 보안 - 최적화와 실행 동시성 제어 - 읽기/쓰기 잠금 - 잠금 세분성 트랜잭션 - 격리 수준 - 데드락 - 트랜잭션 로깅 - MySQL의 트랜잭션 MVCC(다중 버전 동시성 제어) MySQL의 스토리지 엔진 - MyISAM 엔진 - MyISAM 병합 엔진 - InnoDB 엔진 - Memory 엔진 - Archive 엔진 - CSV 엔진 - Federated 엔진 - Blackhole 엔진 - NDB 클러스터 엔진 - Falcon 엔진 - SolidDB 엔진 - PBXT(Primebase XT) 엔진 - Maria 엔진 - 그 밖의 스토리지 엔진 - 적합한 엔진 선택하기 - 고려 사항 - 실용 예제 - 스토리지 엔진 요약 - 테이블 변환
2장 병목지점 찾기: 벤치마킹과 프로파일링
왜 벤치마크하는가? 벤치마킹 전략들 - 무엇을 측정할 것인가 벤치마킹 전술 - 벤치마크를 설계하고 계획하기 - 정확한 결과 얻기 - 벤치마크를 실행하고 결과를 분석하기 벤치마크 도구 - 풀-스택 도구 - 단일 컴포넌트 도구 벤치마크 사례들 - http_load - sysbench - 데이터베이스 테스트 스위트의 dbt2 TPC-C - MySQL 벤치마크 스위트 프로파일링 - 응용프로그램 프로파일링하기 - MySQL 프로파일링 - MySQL 서버 프로파일링하기 - SHOW STATUS 로 쿼리 프로파일하기 - SHOW PROFILE - MySQL을 프로파일하는 다른 방법 - 프로파일링 코드를 넣지 못할 때 운영체제 프로파일링 - MySQL 연결 및 프로세스의 문제 해결하기 - 고급 프로파일링 및 문제 해결
3장. 스키마 최적화와 인덱싱
최적의 데이터 타입 고르기 - 정수 타입 - 실수 타입 - 문자열 타입 - 날짜 및 시간 타입 - 비트(Bit)로 구성된 데이터 타입 - 식별자 고르기 - 특별한 데이터 타입 인덱싱 기초 - 인덱스의 종류 고성능을 위한 인덱싱 전략 - 칼럼을 격리시키기 - 프리픽스 인덱스와 인덱스 선택도 - 클러스터링 인덱스 - 커버링 인덱스 - 정렬을 위한 인덱스 스캔의 사용 - 압축(프리픽스 압축) 인덱스 - 중첩 또는 중복된 인덱스 - 인덱스와 잠금 인덱싱 사례 연구 - 여러 종류의 필터링 지원하기 - 다수의 범위 조건 피하기 - 정렬 최적화하기 인덱스 및 테이블 유지보수 - 테이블 손상을 발견하고 고치기 - 인덱스 통계정보 갱신하기 - 인덱스 및 데이터 단편화 줄이기 정규화와 비정규화 - 정규화된 스키마에 대한 찬반론 - 비정규화된 스키마에 대한 찬반론 - 정규화와 비정규화의 혼합 - 캐시 및 집계 테이블 ALTER TABLE의 속도를 향상시키기 - .frm 파일만 수정하기 - MyISAM 인덱스를 신속하게 구축하기 스토리지 엔진에 대하여 - MyISAM 스토리지 엔진 - Memory 스토리지 엔진 - InnoDB 스토리지 엔진
4장 쿼리 성능 최적화
슬로우 쿼리: 데이터 접근을 최적화하기 - 데이터베이스에 필요 이상의 데이터를 요구하고 있는가? - MySQL이 너무 많은 데이터를 조사하는가? 쿼리를 재구성하는 방법들 - 복잡한 쿼리 vs 여러 개의 쿼리 - 쿼리 자르기 - 조인 분해 쿼리 실행의 기초 - MySQL 클라이언트/서버 프로토콜 - 쿼리 캐시 - 쿼리 최적화 단계 - 쿼리 실행 엔진 - 결과를 클라이언트로 돌려주기 MySQL 쿼리 옵티마이저의 제한 사항 상관 서브쿼리 특정 형식의 쿼리 최적화하기 - COUNT() 쿼리 최적화하기 - 조인 쿼리 최적화하기 - 서브쿼리 최적화하기 - GROUP BY와 DISTINCT 최적화하기 - LIMIT와 OFFSET 최적화하기 - SQL_CALC_FOUND_ROWS 최적화하기 - UNION 최적화 하기 쿼리 최적화 힌트 사용자 정의 변수 - MySQL 업그레이드에 주의하기
5장 고급 MySQL 기능
MySQL의 쿼리 캐시 - MySQL이 캐시 적중을 검사하는 방법 - 캐시가 메모리를 쓰는 법 - 쿼리 캐시가 도움이 될 때 - 쿼리 캐시를 튜닝하고 유지보수하는 법 - InnoDB와 쿼리 캐시 - 일반적인 쿼리 캐시 최적화 - 쿼리 캐시의 대안 MySQL 안에 코드를 저장하기 - 스토어드 펑션과 프로시저 - 트리거 - 이벤트 - 스토어드 코드 안의 주석 보존하기 커서 프리페어 스테이트먼트 - 프리페어 스테이트먼트 최적화 - 프리페어 스테이트먼트 용 SQL 인터페이스 - 프리페어 스테이트먼트의 제한 사항 사용자 정의 함수 뷰 - 업데이트 가능한 뷰 - 뷰의 성능 - 뷰의 한계 문자 셋과 콜레이션 - MySQL이 문자 셋을 사용하는 방법 - 문자 셋과 콜레이션 고르기 - 문자 셋과 콜레이션은 쿼리에 어떻게 영향을 미치는가 전문 검색 - 자연어 검색 - 불리언 검색 - MySQL 5.1 이상에서의 전문 검색의 변화 - 전문 검색의 득과실 그리고 해결책 - 전문 검색 튜닝과 최적화 외래 키 제약조건 머지 테이블과 파티션 테이블 - 머지 테이블 - 파티션 테이블 분산(XA) 트랙잭션 - 내부 XA 트랜잭션 - 외부 XA 트랜잭션
6장 서버 설정 최적화
기본 설정 방법 - 문법과 변수의 범위 그리고 동적 재설정 - 변수 설정의 부작용 - 시작하기 일반적인 튜닝 - 메모리 사용 튜닝하기 - MyISAM 키 캐시 - InnoDB 버퍼 풀 - 스레드 캐시 - 테이블 캐시 - InnoDB 데이터 사전 MySQL의 I/O 조작 튜닝하기 - MyISAM I/O 튜닝 - InnoDB I/O 튜닝 MySQL 동시성 튜닝하기 - MyISAM 동시성 튜닝 - InnoDB 동시성 튜닝 작업량에 기초한 튜닝 - BLOB와 TEXT 작업 최적화하기 - 파일 정렬 최적화 - MySQL 서버 상태 변수 검사하기 커넥션별 설정 튜닝하기
7장 운영체제와 하드웨어 최적화
무엇이 MySQL의 성능을 제한하는가? MySQL 용 CPU 선택 방법 - CPU가 빠른 것이 좋은가 많은 것이 좋은가? - CPU 아키텍처 - 다중 CPU와 코어로 확장하기 메모리와 디스크 자원 균형맞추기 - 랜덤 대 순차 I/O - 캐싱, 읽기, 쓰기 - 작업 집합(Working Set)이란? - 효과적인 메모리 대 디스크 비율 찾기 - 하드 디스크 선택하기 슬레이브용 하드웨어 선택하기 RAID 성능 최적화 - RAID 실패, 복구, 모니터링 - 하드웨어 RAID와 소프트웨어 RAID 균형 맞추기 - RAID 구성과 캐싱 SAN와 NAS - SAN - NAS 다중 디스크 볼륨 사용하기 네트워크 구성 운영체제 선택하기 파일시스템 선택하기 스레딩 스와핑 운영 체제 상태 - vmstat 출력 읽는 방법 - iostat 출력 읽는 방법 - CPU 바운드 상태의 장비 - I/O 바운드 상태의 장비 - 스와핑이 많은 장비 - 대기(Idle) 상태의 장비
8장 복제
복제 개요 - 복제를 통한 문제 해결 - 복제 작동 방법 복제 구성하기 - 복제 계정 만들기 - 마스터와 슬레이브 구성하기 - 슬레이브 시작하기 - 다른 서버에서 슬레이브 초기화하기 - 권장되는 복제 구성 복제 살펴보기 - 구문-기반 복제 - 레코드 기반 복제 - 복제 파일 - 복제 이벤트를 다른 슬레이브에 보내기 - 복제 필터 복제 형태 - 마스터와 여러 슬레이브 - 액티브-액티브 모드의 마스터-마스터 - 액티브-패시브 모드의 마스터-마스터 - 슬레이브가 있는 마스터-마스터 - 링 - 마스터, 분배 마스터, 슬레이브 - 트리 또는 피라미드 - 사용자 정의 복제 솔루션 복제와 용량 계획 - 복제가 쓰기 확장에 도움이 되지 못하는 이유 - 사용률 억제 계획 복제 관리와 유지 - 복제 감시하기 - 슬레이브 지연 측정하기 - 슬레이브와 마스터의 데이터 일관성 판단하기 - 슬레이브를 마스터에 재동기화하기 - 마스터 변경하기 - 마스터-마스터 구성에서 역할 전환하기 복제 문제와 해결책 - 데이터 손상이나 손실로 인한 오류 - 비 트랜잭션용 테이블 사용하기 - 트랜잭션용과 비 트랜잭션용 테이블 혼합하기 - 비 확정적 구문 - 마스터와 슬레이브의 다른 스토리지 엔진 - 슬레이브의 데이터 변경 - 유일하지 않은 서버 ID - 정의되지 않은 서버 ID - 복제되지 않은 데이터에 대한 의존성 - 누락된 임시 테이블 - 업데이트 중 일부를 복제하지 않는 것 - InnoDB 잠금 선택으로 인한 잠금 충돌 - 마스터-마스터 복제에서 두 마스터에 모두 쓰기 - 지나친 복제 지연 시간 - 마스터의 대형 패킷 - 제한된 복제 대역폭 - 디스크 공간 없음 - 복제의 한계점 복제는 얼마나 빠른가? MySQL 복제의 미래
9장 성능확장 및 고가용성
용어 MySQL 확장하기 - 확장성을 위한 계획 세우기 - 확장 이전에 시간 벌기 - 수직 확장하기 - 수평 확장하기 - 스케일 백 - 클러스터링으로 확장하기 부하 분산 - 직접 연결하기 - 중개인 도입하기 - 마스터와 여러 슬레이브로 부하 분산하기 고가용성 - 고가용성 설계 - 중복성 추가하기 - 장애 조치와 장애 복구
10장 응용프로그램 수준의 최적화
응용프로그램 성능 개요 - 문제의 요인 찾기 - 일반적인 문제 찾기 웹 서버 문제 - 최적의 동시성 알아내기 캐싱 - 응용프로그램보다 하위 수준에서 캐시하기 - 응용프로그램 수준의 캐싱 - 캐시 조절 규칙 - 캐시 객체 계층 구조 - 컨텐츠 미리 생성하기 MySQL 확장하기 MySQL의 대안
11장 백업과 복구
개요 - 용어 - 모든 것이 복구를 위한 것이다 - 다루지 않는 주제 - 개념 잡기 - 왜 백업을 하는가? 고려 사항과 보완 해야할 점 - 손실을 얼마나 감당할 수 있는가? - 온라인 백업 아니면 오프라인 백업? - 논리적 아니면 물리적 백업? - 무엇을 백업 하는가 - 스토리지 엔진과 일관성 - 복제 바이너리 로그 관리와 백업 - 바이너리 로그 형식 - 오래된 바이너리 로그 안전하게 삭제하기 데이터 백업하기 - 논리 백업 만들기 - 파일시스템 스냅샷 백업에서 복구하기 - MySQL로의 접근 제한하기 - 물리적 파일 복원하기 - 논리 백업 복원하기 - PIT(Point-in-Time) 복구 - 고급 복구 기법 - InnoDB 복구 백업과 복구 속도 백업 도구 - mysqldump - mysqlhotcopy - InnoDB 핫 백업 - mk-parallel-dump - mylvmbackup - Zmanda 복구 관리자 - R1Soft - MySQL 온라인 백업 - 백업 도구 비교 백업 스크립트 작성하기
12장 보안
용어 계정의 기본 - 권한 - 권한 테이블 - MySQL의 권한 확인 방법 - 권한의 조회 및 추가, 제거 - MySQL 권한 설정하기 - MySQL 4.1에서 변경된 권한 처리 방식 - MySQL 5.0에서 변경된 권한 처리 방식 - 권한과 성능 - 일반적인 문제와 해결책 운영체제 보안 - 지침 네트워크 보안 - 로컬 호스트 전용 연결 - 방화벽 - DMZ 안의 MySQL - 연결 암호화와 터널링 - TCP 래퍼 - 자동 호스트 차단 데이터 암호화 - 비밀번호 해싱 - 암호화된 파일시스템 - 응용프로그램 수준의 암호화 - 소스 코드 수정 chroot 환경에서의 MySQL
13장 MySQL 서버상태
시스템 변수 SHOW STATUS - 스레드와 연결 통계 - 바이너리 로깅 상태 - 명령 카운터 - 임시 파일과 테이블 - 핸들러 작업 - MyISAM 키 버퍼 - 파일 기술자 - 쿼리 캐시 - SELECT 타입 - 정렬 - 테이블 잠금 - SSL(Secure Socket Layer) - InnoDB 전용 - 플러그인 전용 - 기타 SHOW INNODB STATUS - 헤더 정보 - 세마포어 - 외래키 오류 - 검출된 데드락 - 트랜잭션 - 파일 입출력 - 인서트 버퍼와 어댑티브 해시 인덱스 - 로그 - 버퍼 풀과 메모리 - 레코드 조작 SHOW PROCESSLIST SHOW MUTEX STATUS 복제 상태 INFORMATION_SCHEMA
14장 고성능을 위한 도구들
쿼리 실행 도구 - MySQL의 GUI 도구들 - SQLyog - phpMyAdmin 모니터링 도구들 - 비대화식 모니터링 시스템 - 대화식 도구들 분석 도구들 - HackMySQL 도구들 - Maatkit 분석 도구들 MySQL 유틸리티들 - MySQL 프록시 - MySQL을 위한 Dormando의 Proxy - Maatkit 유틸리티들 더 읽어볼 거리
부록A 대용량 파일 전송
파일 복사 파일 복사에 대한 벤치마크
부록B EXPLAIN 사용하기
EXPLAIN 실행 EXPLAIN에 나오는 칼럼들 비쥬얼 EXPLAIN
부록C MySQL과 함께 스핑크스 사용하기
개요: 일반적인 용도의 스핑크스 검색 왜 스핑크스를 사용할까? 아키텍쳐 특별한 기능들 실제 구현 예제들 결론
부록D 락 디버깅
서버 레벨에서 잠금 대기 스토리지 엔진에서의 락 대기
|
 |
1장 MySQL 아키텍처
MySQL의 논리적 아키텍처 - 연결 관리와 보안 - 최적화와 실행 동시성 제어 - 읽기/쓰기 잠금 - 잠금 세분성 트랜잭션 - 격리 수준 - 데드락 - 트랜잭션 로깅 - MySQL의 트랜잭션 MVCC(다중 버전 동시성 제어) MySQL의 스토리지 엔진 - MyISAM 엔진 - MyISAM 병합 엔진 - InnoDB 엔진 - Memory 엔진 - Archive 엔진 - CSV 엔진 - Federated 엔진 - Blackhole 엔진 - NDB 클러스터 엔진 - Falcon 엔진 - SolidDB 엔진 - PBXT(Primebase XT) 엔진 - Maria 엔진 - 그 밖의 스토리지 엔진 - 적합한 엔진 선택하기 - 고려 사항 - 실용 예제 - 스토리지 엔진 요약 - 테이블 변환
2장 병목지점 찾기: 벤치마킹과 프로파일링
왜 벤치마크하는가? 벤치마킹 전략들 - 무엇을 측정할 것인가 벤치마킹 전술 - 벤치마크를 설계하고 계획하기 - 정확한 결과 얻기 - 벤치마크를 실행하고 결과를 분석하기 벤치마크 도구 - 풀-스택 도구 - 단일 컴포넌트 도구 벤치마크 사례들 - http_load - sysbench - 데이터베이스 테스트 스위트의 dbt2 TPC-C - MySQL 벤치마크 스위트 프로파일링 - 응용프로그램 프로파일링하기 - MySQL 프로파일링 - MySQL 서버 프로파일링하기 - SHOW STATUS 로 쿼리 프로파일하기 - SHOW PROFILE - MySQL을 프로파일하는 다른 방법 - 프로파일링 코드를 넣지 못할 때 운영체제 프로파일링 - MySQL 연결 및 프로세스의 문제 해결하기 - 고급 프로파일링 및 문제 해결
3장. 스키마 최적화와 인덱싱
최적의 데이터 타입 고르기 - 정수 타입 - 실수 타입 - 문자열 타입 - 날짜 및 시간 타입 - 비트(Bit)로 구성된 데이터 타입 - 식별자 고르기 - 특별한 데이터 타입 인덱싱 기초 - 인덱스의 종류 고성능을 위한 인덱싱 전략 - 칼럼을 격리시키기 - 프리픽스 인덱스와 인덱스 선택도 - 클러스터링 인덱스 - 커버링 인덱스 - 정렬을 위한 인덱스 스캔의 사용 - 압축(프리픽스 압축) 인덱스 - 중첩 또는 중복된 인덱스 - 인덱스와 잠금 인덱싱 사례 연구 - 여러 종류의 필터링 지원하기 - 다수의 범위 조건 피하기 - 정렬 최적화하기 인덱스 및 테이블 유지보수 - 테이블 손상을 발견하고 고치기 - 인덱스 통계정보 갱신하기 - 인덱스 및 데이터 단편화 줄이기 정규화와 비정규화 - 정규화된 스키마에 대한 찬반론 - 비정규화된 스키마에 대한 찬반론 - 정규화와 비정규화의 혼합 - 캐시 및 집계 테이블 ALTER TABLE의 속도를 향상시키기 - .frm 파일만 수정하기 - MyISAM 인덱스를 신속하게 구축하기 스토리지 엔진에 대하여 - MyISAM 스토리지 엔진 - Memory 스토리지 엔진 - InnoDB 스토리지 엔진
4장 쿼리 성능 최적화
슬로우 쿼리: 데이터 접근을 최적화하기 - 데이터베이스에 필요 이상의 데이터를 요구하고 있는가? - MySQL이 너무 많은 데이터를 조사하는가? 쿼리를 재구성하는 방법들 - 복잡한 쿼리 vs 여러 개의 쿼리 - 쿼리 자르기 - 조인 분해 쿼리 실행의 기초 - MySQL 클라이언트/서버 프로토콜 - 쿼리 캐시 - 쿼리 최적화 단계 - 쿼리 실행 엔진 - 결과를 클라이언트로 돌려주기 MySQL 쿼리 옵티마이저의 제한 사항 상관 서브쿼리 특정 형식의 쿼리 최적화하기 - COUNT() 쿼리 최적화하기 - 조인 쿼리 최적화하기 - 서브쿼리 최적화하기 - GROUP BY와 DISTINCT 최적화하기 - LIMIT와 OFFSET 최적화하기 - SQL_CALC_FOUND_ROWS 최적화하기 - UNION 최적화 하기 쿼리 최적화 힌트 사용자 정의 변수 - MySQL 업그레이드에 주의하기
5장 고급 MySQL 기능
MySQL의 쿼리 캐시 - MySQL이 캐시 적중을 검사하는 방법 - 캐시가 메모리를 쓰는 법 - 쿼리 캐시가 도움이 될 때 - 쿼리 캐시를 튜닝하고 유지보수하는 법 - InnoDB와 쿼리 캐시 - 일반적인 쿼리 캐시 최적화 - 쿼리 캐시의 대안 MySQL 안에 코드를 저장하기 - 스토어드 펑션과 프로시저 - 트리거 - 이벤트 - 스토어드 코드 안의 주석 보존하기 커서 프리페어 스테이트먼트 - 프리페어 스테이트먼트 최적화 - 프리페어 스테이트먼트 용 SQL 인터페이스 - 프리페어 스테이트먼트의 제한 사항 사용자 정의 함수 뷰 - 업데이트 가능한 뷰 - 뷰의 성능 - 뷰의 한계 문자 셋과 콜레이션 - MySQL이 문자 셋을 사용하는 방법 - 문자 셋과 콜레이션 고르기 - 문자 셋과 콜레이션은 쿼리에 어떻게 영향을 미치는가 전문 검색 - 자연어 검색 - 불리언 검색 - MySQL 5.1 이상에서의 전문 검색의 변화 - 전문 검색의 득과실 그리고 해결책 - 전문 검색 튜닝과 최적화 외래 키 제약조건 머지 테이블과 파티션 테이블 - 머지 테이블 - 파티션 테이블 분산(XA) 트랙잭션 - 내부 XA 트랜잭션 - 외부 XA 트랜잭션
6장 서버 설정 최적화
기본 설정 방법 - 문법과 변수의 범위 그리고 동적 재설정 - 변수 설정의 부작용 - 시작하기 일반적인 튜닝 - 메모리 사용 튜닝하기 - MyISAM 키 캐시 - InnoDB 버퍼 풀 - 스레드 캐시 - 테이블 캐시 - InnoDB 데이터 사전 MySQL의 I/O 조작 튜닝하기 - MyISAM I/O 튜닝 - InnoDB I/O 튜닝 MySQL 동시성 튜닝하기 - MyISAM 동시성 튜닝 - InnoDB 동시성 튜닝 작업량에 기초한 튜닝 - BLOB와 TEXT 작업 최적화하기 - 파일 정렬 최적화 - MySQL 서버 상태 변수 검사하기 커넥션별 설정 튜닝하기
7장 운영체제와 하드웨어 최적화
무엇이 MySQL의 성능을 제한하는가? MySQL 용 CPU 선택 방법 - CPU가 빠른 것이 좋은가 많은 것이 좋은가? - CPU 아키텍처 - 다중 CPU와 코어로 확장하기 메모리와 디스크 자원 균형맞추기 - 랜덤 대 순차 I/O - 캐싱, 읽기, 쓰기 - 작업 집합(Working Set)이란? - 효과적인 메모리 대 디스크 비율 찾기 - 하드 디스크 선택하기 슬레이브용 하드웨어 선택하기 RAID 성능 최적화 - RAID 실패, 복구, 모니터링 - 하드웨어 RAID와 소프트웨어 RAID 균형 맞추기 - RAID 구성과 캐싱 SAN와 NAS - SAN - NAS 다중 디스크 볼륨 사용하기 네트워크 구성 운영체제 선택하기 파일시스템 선택하기 스레딩 스와핑 운영 체제 상태 - vmstat 출력 읽는 방법 - iostat 출력 읽는 방법 - CPU 바운드 상태의 장비 - I/O 바운드 상태의 장비 - 스와핑이 많은 장비 - 대기(Idle) 상태의 장비
8장 복제
복제 개요 - 복제를 통한 문제 해결 - 복제 작동 방법 복제 구성하기 - 복제 계정 만들기 - 마스터와 슬레이브 구성하기 - 슬레이브 시작하기 - 다른 서버에서 슬레이브 초기화하기 - 권장되는 복제 구성 복제 살펴보기 - 구문-기반 복제 - 레코드 기반 복제 - 복제 파일 - 복제 이벤트를 다른 슬레이브에 보내기 - 복제 필터 복제 형태 - 마스터와 여러 슬레이브 - 액티브-액티브 모드의 마스터-마스터 - 액티브-패시브 모드의 마스터-마스터 - 슬레이브가 있는 마스터-마스터 - 링 - 마스터, 분배 마스터, 슬레이브 - 트리 또는 피라미드 - 사용자 정의 복제 솔루션 복제와 용량 계획 - 복제가 쓰기 확장에 도움이 되지 못하는 이유 - 사용률 억제 계획 복제 관리와 유지 - 복제 감시하기 - 슬레이브 지연 측정하기 - 슬레이브와 마스터의 데이터 일관성 판단하기 - 슬레이브를 마스터에 재동기화하기 - 마스터 변경하기 - 마스터-마스터 구성에서 역할 전환하기 복제 문제와 해결책 - 데이터 손상이나 손실로 인한 오류 - 비 트랜잭션용 테이블 사용하기 - 트랜잭션용과 비 트랜잭션용 테이블 혼합하기 - 비 확정적 구문 - 마스터와 슬레이브의 다른 스토리지 엔진 - 슬레이브의 데이터 변경 - 유일하지 않은 서버 ID - 정의되지 않은 서버 ID - 복제되지 않은 데이터에 대한 의존성 - 누락된 임시 테이블 - 업데이트 중 일부를 복제하지 않는 것 - InnoDB 잠금 선택으로 인한 잠금 충돌 - 마스터-마스터 복제에서 두 마스터에 모두 쓰기 - 지나친 복제 지연 시간 - 마스터의 대형 패킷 - 제한된 복제 대역폭 - 디스크 공간 없음 - 복제의 한계점 복제는 얼마나 빠른가? MySQL 복제의 미래
9장 성능확장 및 고가용성
용어 MySQL 확장하기 - 확장성을 위한 계획 세우기 - 확장 이전에 시간 벌기 - 수직 확장하기 - 수평 확장하기 - 스케일 백 - 클러스터링으로 확장하기 부하 분산 - 직접 연결하기 - 중개인 도입하기 - 마스터와 여러 슬레이브로 부하 분산하기 고가용성 - 고가용성 설계 - 중복성 추가하기 - 장애 조치와 장애 복구
10장 응용프로그램 수준의 최적화
응용프로그램 성능 개요 - 문제의 요인 찾기 - 일반적인 문제 찾기 웹 서버 문제 - 최적의 동시성 알아내기 캐싱 - 응용프로그램보다 하위 수준에서 캐시하기 - 응용프로그램 수준의 캐싱 - 캐시 조절 규칙 - 캐시 객체 계층 구조 - 컨텐츠 미리 생성하기 MySQL 확장하기 MySQL의 대안
11장 백업과 복구
개요 - 용어 - 모든 것이 복구를 위한 것이다 - 다루지 않는 주제 - 개념 잡기 - 왜 백업을 하는가? 고려 사항과 보완 해야할 점 - 손실을 얼마나 감당할 수 있는가? - 온라인 백업 아니면 오프라인 백업? - 논리적 아니면 물리적 백업? - 무엇을 백업 하는가 - 스토리지 엔진과 일관성 - 복제 바이너리 로그 관리와 백업 - 바이너리 로그 형식 - 오래된 바이너리 로그 안전하게 삭제하기 데이터 백업하기 - 논리 백업 만들기 - 파일시스템 스냅샷 백업에서 복구하기 - MySQL로의 접근 제한하기 - 물리적 파일 복원하기 - 논리 백업 복원하기 - PIT(Point-in-Time) 복구 - 고급 복구 기법 - InnoDB 복구 백업과 복구 속도 백업 도구 - mysqldump - mysqlhotcopy - InnoDB 핫 백업 - mk-parallel-dump - mylvmbackup - Zmanda 복구 관리자 - R1Soft - MySQL 온라인 백업 - 백업 도구 비교 백업 스크립트 작성하기
12장 보안
용어 계정의 기본 - 권한 - 권한 테이블 - MySQL의 권한 확인 방법 - 권한의 조회 및 추가, 제거 - MySQL 권한 설정하기 - MySQL 4.1에서 변경된 권한 처리 방식 - MySQL 5.0에서 변경된 권한 처리 방식 - 권한과 성능 - 일반적인 문제와 해결책 운영체제 보안 - 지침 네트워크 보안 - 로컬 호스트 전용 연결 - 방화벽 - DMZ 안의 MySQL - 연결 암호화와 터널링 - TCP 래퍼 - 자동 호스트 차단 데이터 암호화 - 비밀번호 해싱 - 암호화된 파일시스템 - 응용프로그램 수준의 암호화 - 소스 코드 수정 chroot 환경에서의 MySQL
13장 MySQL 서버상태
시스템 변수 SHOW STATUS - 스레드와 연결 통계 - 바이너리 로깅 상태 - 명령 카운터 - 임시 파일과 테이블 - 핸들러 작업 - MyISAM 키 버퍼 - 파일 기술자 - 쿼리 캐시 - SELECT 타입 - 정렬 - 테이블 잠금 - SSL(Secure Socket Layer) - InnoDB 전용 - 플러그인 전용 - 기타 SHOW INNODB STATUS - 헤더 정보 - 세마포어 - 외래키 오류 - 검출된 데드락 - 트랜잭션 - 파일 입출력 - 인서트 버퍼와 어댑티브 해시 인덱스 - 로그 - 버퍼 풀과 메모리 - 레코드 조작 SHOW PROCESSLIST SHOW MUTEX STATUS 복제 상태 INFORMATION_SCHEMA
14장 고성능을 위한 도구들
쿼리 실행 도구 - MySQL의 GUI 도구들 - SQLyog - phpMyAdmin 모니터링 도구들 - 비대화식 모니터링 시스템 - 대화식 도구들 분석 도구들 - HackMySQL 도구들 - Maatkit 분석 도구들 MySQL 유틸리티들 - MySQL 프록시 - MySQL을 위한 Dormando의 Proxy - Maatkit 유틸리티들 더 읽어볼 거리
부록A 대용량 파일 전송
파일 복사 파일 복사에 대한 벤치마크
부록B EXPLAIN 사용하기
EXPLAIN 실행 EXPLAIN에 나오는 칼럼들 비쥬얼 EXPLAIN
부록C MySQL과 함께 스핑크스 사용하기
개요: 일반적인 용도의 스핑크스 검색 왜 스핑크스를 사용할까? 아키텍쳐 특별한 기능들 실제 구현 예제들 결론
부록D 락 디버깅
서버 레벨에서 잠금 대기 스토리지 엔진에서의 락 대기
|
|
|
|
 |
판매가 |
42,000원 → 33,600원 20% |
|
 |
마일리지 |
1% 340원 | |
 |
발행일 |
2010-11-19 |
 |
ISBN |
899293954X | 9788992939546 |
 |
기타정보 |
번역서 | 816쪽 | |
 |
예상출고일 |
금일 가능 (근무일기준) |
 |
배송비 |
무료배송 |
| |
|
| | | | |
댓글 12개
찜리스트에다가 다시 넣어뒀습니다.
시간날때 서점가서 필요한 부분만 봐야겠습니다.
새로운 기술도 많고, 사보고 싶은 책도 많고... 하아~
요즘 책장사가 진리라는 생각이 들고 있습니다. 관리자님도 책하나 내시죠^^
아마도 측은해서 하나 사주실거예요~
저도 사야지.. ㅋㅋ