이미 소장하고 있다면 판매해 보세요.
|
1장 기본적인 문제
__1.1 잘못된 구문 __1.2 SELECT문의 잘못된 결과 __1.3 이전 갱신에 의한 문제 __1.4 쿼리 결과 확인하기 __1.5 데이터 에러 추적하기 __1.6 느린 쿼리 ____1.6.1 EXPLAIN 명령의 정보로 쿼리 튜닝하기 ____1.6.2 테이블 튜닝과 인덱스 ____1.6.3 최적화를 멈춰야 할 때 ____1.6.4 옵션의 영향 ____1.6.5 데이터를 수정하는 쿼리 ____1.6.6 만병통치약은 없다 __1.7 서버 응답이 없을 때 __1.8 스토리지 엔진 고유의 문제 ____1.8.1 MyISAM 손상 ____1.8.2 InnoDB 손상 __1.9 권한 문제 2장 동시성 문제 __2.1 락과 트랜잭션 __2.2 락 ____2.2.1 테이블 락 ____2.2.2 행 락 __2.3 트랜잭션 ____2.3.1 숨어 있는 쿼리 ____2.3.2 데드락 ____2.3.3 암묵적 커밋 __2.4 메타데이터 락 ____2.4.1 메타데이터 락과 구형 모델 __2.5 동시성이 성능에 미치는 영향 ____2.5.1 동시성 문제에 대해 InnoDB 트랜잭션 감시하기 ____2.5.2 동시성 문제에 대해 다른 리소스 감시하기 __2.6 그 외의 락 문제 __2.7 이중화와 동시성 ____2.7.1 문장 기반 이중화의 문제 ____2.7.2 트랜잭션과 비트랜잭션 테이블 혼합하기 ____2.7.3 보조 서버에서 발생하는 문제 __2.8 MySQL 문제 해결 도구를 효과적으로 사용하기 ____2.8.1 SHOW PROCESSLIST 명령과 INFORMATION_SCHEMA.PROCESSLIST 테이블 ____2.8.2 SHOW ENGINE INNODB STATUS 명령과 InnoDB 모니터 ____2.8.3 INFORMATION_SCHEMA 테이블 ____2.8.4 PERFORMANCE_SCHEMA 테이블 ____2.8.5 로그 파일 3장 서버 옵션 영향 __3.1 서비스 옵션 __3.2 서버 작동을 바꾸는 변수 __3.3 하드웨어 리소스 제한 옵션 __3.4 --no-defaults 옵션 __3.5 성능 옵션 __3.6 서두르면 망친다 __3.7 SET문 __3.8 옵션 영향 확인 방법 __3.9 변수 설명 ____3.9.1 서버와 클라이언트에 영향을 주는 옵션 ____3.9.2 성능에 관련된 옵션 ____3.9.3 옵션에 대한 안전한 값 계산하기 4장 MySQL 환경 __4.1 물리적인 하드웨어 제한 ____4.1.1 램 ____4.1.2 프로세서와 코어 ____4.1.3 디스크 I/O ____4.1.4 네트워크 대역폭 ____4.1.5 지연 영향의 사례 __4.2 운영체제 제한 __4.3 다른 소프트웨어의 영향 5장 이중화 문제 해결 __5.1 보조 서버 상태 표시하기 __5.2 I/O 스레드 문제 해결하기 __5.3 SQL 스레드 문제 해결하기 ____5.3.1 주 서버와 보조 서버의 데이터가 다를 때 ____5.3.2 순환 이중화와 보조 서버에 비이중화 쓰기 ____5.3.3 불완전하거나 변경된 SQL문 ____5.3.4 주 서버와 보조 서버에서 다른 에러 ____5.3.5 환경 설정 ____5.3.6 보조 서버가 주 서버보다 실행 속도가 많이 느릴 때 6장 문제 해결 기법과 도구 __6.1 쿼리 ____6.1.1 느린 쿼리 로그 ____6.1.2 사용자가 정의할 수 있는 도구 ____6.1.3 MySQL 명령행 인터페이스 __6.2 환경의 영향 __6.3 샌드박스 __6.4 에러와 로그 ____6.4.1 다시 보는 에러 정보 ____6.4.2 크래시 __6.5 정보 수집 도구 ____6.5.1 정보 스키마 ____6.5.2 InnoDB 정보 스키마 테이블 ____6.5.3 InnoDB 모니터 ____6.5.4 성능 스키마 ____6.5.5 SHOW [GLOBAL] STATUS __6.6 문제 단순화하기(테스트 케이스의 최소화) __6.7 문제를 해결하는 일반적인 단계 __6.8 테스트 방법 ____6.8.1 새로운 버전에 쿼리 시도하기 ____6.8.2 알려진 버그 확인하기 ____6.8.3 문제 회피하기 __6.9 특별한 테스트 도구 ____6.9.1 벤치마크 도구 ____6.9.2 Gypsy ____6.9.3 MySQL 테스트 프레임워크 __6.10 유지 보수 도구 ____6.10.1 MySQL 배포판에 제공되는 도구 ____6.10.2 퍼코나 툴킷 ____6.10.3 MySQL WB 유틸리티 ____6.10.4 모니터링 도구 7장 좋은 습관 __7.1 백업 ____7.1.1 백업 계획하기 ____7.1.2 백업의 종류 ____7.1.3 도구 __7.2 필요한 정보 수집하기 ____7.2.1 이 모든 정보가 의미하는 것은 __7.3 테스트 __7.4 예방 ____7.4.1 권한 ____7.4.2 환경 __7.5 생각해볼 거리 부록 참고 자료 __유용한 정보가 담겨 있는 참고 자료 __버그와 지식 데이터베이스 __온라인 포털 __도움을 요청할 수 있는 곳 __책 |
|
필자는 2006년 5월부터 MySQL AB(이후 썬에, 그 다음에는 오라클에 합병되었다)의 MySQL 지원 그룹 버그 검증팀에서 수석 기술 지원 엔지니어로 근무해왔다. 그러면서 업무를 통해 어떤 문제에 막혀 그 다음에는 어떻게 해야 할지 알지 못해 전전긍긍해 하는 사용자들을 종종 보아왔다. 문제의 원인을 찾고 효과적으로 해결하는 제대로 검증된 방법들이 있지만 쏟아지는 정보 속에서 검증된 방법을 추려내기는 매우 힘들었다. 물론 책, 블로그, 웹 페이지에 있는 수백 가지 정보들이 MySQL 서버의 여러 부분을 자세히 설명하고 있다. 그러나 이 정보들은 MySQL 서버가 정상적으로 작동하는 방법을 설명하는 데 주안점을 두고 있으며, 장애나 오작동의 원인을 찾아내는 방법은 설명하지 않으므로 문제 해결이 어렵다.
사실 앞에서 소개한 정보들을 잘 조합하면 MySQL을 운용하는 데 필요한 모든 측면을 자세히 설명할 수 있다. 하지만 문제가 발생하는 원인을 알지 못하면 문서가 설명하는 수십 가지 가능한 원인 중에 진짜 원인을 알아낼 수 없다. 여러분이 전문가에게 문제의 원인을 물어봐도 전문가는 여러 가능성만을 나열할 수 있을 뿐, 결국 진짜 원인은 여러분이 찾아내야 한다. 진짜 원인을 찾아내지 못하고 수정하면 문제를 일시적으로 숨기거나 더 악화시킬 뿐이다. 따라서 SQL 문장이나 설정 옵션을 바꿔 문제가 사라지더라도 문제의 원인을 파악하는 것은 정말 중요하다. 문제의 원인을 알면 문제를 영원히 해결할 수 있고 향후에 같은 문제가 재발되지 않게 할 수 있다. 이 책은 SQL 애플리케이션이나 MySQL 설정에서 발생하는 에러의 원인을 찾아내고 문제를 해결하기 위해 필자가 사용해온 방법을 설명한다. ---「저자 서문」 중에서 |
|
MySQL을 운영하면서 생기는 문제의 원인과 해결 방법, 예방법을 자세히 소개한다.
특징과 장점 ㆍ 멀티스레드 환경에서 애플리케이션을 실행할 때 발생하는 문제를 해결한다. ㆍ MySQL 환경 설정 때문에 발생한 문제를 디버깅하고 해결한다. ㆍ 운영 체제 튜닝이 서버에 미치는 영향을 이해한다. ㆍ 데이터를 이중화할 때 필요한 특별한 문제 해결 기법을 소개한다. ㆍ 서드파티 솔루션 및 추가적인 문제 해결 기법과 도구 정보를 제공한다. 어떤 독자를 위한 책인가? ㆍ MySQL을 운영하고 있는 데이터베이스 관리자 ㆍ MySQL과 연동한 애플리케이션을 개발하는 개발자 ㆍ 각 회사의 MySQL 기술 지원 담당자 ㆍ MySQL을 능숙하고 다루기 원하는 대학생 |