logo
logo
x
바코드검색
BOOKPRICE.co.kr
책, 도서 가격비교 사이트
바코드검색

인기 검색어

실시간 검색어

검색가능 서점

도서목록 제공

MySQL 성능 최적화

MySQL 성능 최적화

최재훈, 정태영, 한정민, 배론 슈와츠 (지은이), 이성욱 (옮긴이)
위키북스
42,000원

일반도서

검색중
서점 할인가 할인률 배송비 혜택/추가 실질최저가 구매하기
알라딘 로딩중
yes24 로딩중
교보문고 로딩중
11st 로딩중
영풍문고 로딩중
쿠팡 로딩중
쿠팡로켓 로딩중
G마켓 로딩중
notice_icon 검색 결과 내에 다른 책이 포함되어 있을 수 있습니다.

중고도서

검색중
서점 유형 등록개수 최저가 구매하기
로딩중

eBook

검색중
서점 정가 할인가 마일리지 실질최저가 구매하기
로딩중

책 이미지

MySQL 성능 최적화
eBook 미리보기

책 정보

· 제목 : MySQL 성능 최적화 
· 분류 : 국내도서 > 컴퓨터/모바일 > 프로그래밍 개발/방법론 > 웹 서비스/웹 프로그래밍
· ISBN : 9788992939546
· 쪽수 : 816쪽
· 출판일 : 2010-11-19

책 소개

MySQL로 빠르고 안정적인 시스템을 구축하는 방법을 알려준다. 대규모 시스템을 실제로 구축한 경험을 다년간 축적한 저명한 전문가가 쓴 이 책은 MySQL의 성능 문제를 상세히 다루며 견고성, 보안, 데이터 무결성에 초점을 맞춘다.

목차

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 락 디버깅

서버 레벨에서 잠금 대기
스토리지 엔진에서의 락 대기

저자소개

최재훈 (옮긴이)    정보 더보기
현재 SW 엔지니어로 근무 중이며, 스마트폰, DTV, 셋톱박스, IoT, XR, 인공지능, 오토모티 브 등 다양한 분야의 개발 경험이 있다. 컴퓨터공학 학사와 석사, 그리고 미국 경영대학원 석사 학위를 가지고 있으며 현재 기술경영학 박사 과정에 있기도 하다. 이전에는 씽크프리코리아(현 한글과컴퓨터그룹 씽크프리)와 휴맥스에서 근무하며 자바 오피스 슈트와 임베디드 셋탑박스 소프트웨어 양산 개발에 기여했다. 『자바 인어넛셀』(한빛미디어, 2000), 『엔터프라이즈 자바 데이터베이스 프로그래밍』(한빛미 디어, 2001), 『Go 성능 최적화 가이드』(디코딩, 2023)를 번역하였다.
펼치기
정태영 (옮긴이)    정보 더보기
웹표준 커뮤니티 standardmag.org의 운영진으로 활동 중이며, 현재 한양대학교 대학원에서 영상 처리 분야를 연구하고 있다.
펼치기
한정민 (옮긴이)    정보 더보기
한국의 입시 문화와 미국의 교육을 모두 경험했다. 유학생 친구들로부터 자극을 받아 유학을 결정했고, 미국 동부 펜실베이니아의 카네기멜론 대학교에서 인간컴퓨터공학(HCI, Human-Computer Interaction), 정보시스템, 디자인을 공부했다. 사람에 대한 이해를 바탕으로 기술을 활용해, 유용하고 편리하며 시각적으로 즐거운 가치 있는 서비스를 만들어내는 데 관심이 많다. 현재는 국내 대기업에서 모바일 관련 해외 사업 발굴과 신규 서비스 기획, 마케팅 등의 업무를 맡아 진행하고 있다.
펼치기
배론 슈와츠 (지은이)    정보 더보기
미국 버지니아 주의 샬롯츠빌에 사는 소프트웨어 엔지니어로 인터넷에서 "Xaprb"라는 별명으로 통한다(QWERTY를 드보락 키보드에서 친 단어다). 배론은 프로그래밍 문제 해결에 골머리를 앓고 있는 중이 아니라면 아내 린과 애완견 카본과 시간을 보내곤 한다. 소프트웨어 엔지니어링에 관한 블로그(http://www.xaprb.com/blog)를 운영한다.
펼치기
이성욱 (지은이)    정보 더보기
컴퓨터 과학을 전공하고 네이버와 라인을 거쳐 카카오 및 밸런스히어로에서 DBA로 근무했으며, 현재 당근마켓 DB팀 리더로 근무하고 있다. 저서 - PHP5 웹 프로그래밍 - MySQL 성능 최적화 - Real MySQL 번역서 - MySQL 성능 최적화(2010. 위키북스)
펼치기

책속에서

『MySQL 성능 최적화』는 대규모 MySQL 서비스를 운영하는 관리자에게 맞는 책이다. DBA가 되고자 하는 SQL 프로그래머나 급격히 규모가 증가하는 서비스의 관리자에게도 적합한 책이다. 제목 그대로 시스템의 성능을 최적의 상태로 유지하는 방법을 다루기 때문이다.
웹 서비스를 포함해 상당수의 서비스가 병목지점인 데이터베이스 때문에 성능을 제대로 발휘하지 못하곤 한다. 더 빠른 하드웨어와 대역폭이 더 큰 망을 도입해 문제를 해결하기도 하지만 비용 문제를 간과할 순 없다. 게다가 국내 외의 유명 웹사이트에 몰리는 트래픽을 감안하면 좀 더 본질적인 해결책이 필요하다. 수년 전에 급격히 성장하던 모 온라인 서점은 웹 페이지가 너무 느리게 뜨는 바람에 사용자의 불만이 성장세만큼이나 가파르게 증가했다. 후일담을 들어보면 유명한 데이터베이스 컨설턴트의 도움을 얻어 수개월 만에 간신히 문제를 해결했다고 한다.
이 이야기는 여러분에게 최소한 두 가지 미래를 보여준다. 자신이 근무하는 회사의 서비스가 겪는 문제를 해결하여 일찌감치 고속 승진의 대열에 들어서는 기회가 있다. 아니면 이 책을 통해 앞서 말한 수준의 데이터베이스 컨설턴트가 되어 고액 소득자 대열에 합류하는 방법도 있다. 이 책만으로 충분하다는 건 아니지만 이 책에서 다룬 내용을 모르고는 그 대열에 자신의 이름을 올려놓기 힘들다는 건 분명하다.
여러분이 무엇을 원하건 아무쪼록 『MySQL 성능 최적화』에서 그 해답을 찾길 바란다. S.M.A.R.T하게 일하고 일찍 퇴근해 균형 있는 삶을 되찾는 데 이 책이 일조했으면 하는 바람이다.


이 포스팅은 쿠팡 파트너스 활동의 일환으로,
이에 따른 일정액의 수수료를 제공받습니다.
이 포스팅은 제휴마케팅이 포함된 광고로 커미션을 지급 받습니다.
도서 DB 제공 : 알라딘 서점(www.aladin.co.kr)
최근 본 책