| 000 | 00824camcc2200253 c 4500 | |
| 001 | 000045707005 | |
| 005 | 20120529152009 | |
| 007 | ta | |
| 008 | 120525s2012 ggkad 001c kor | |
| 020 | ▼a 9788992939003 ▼g 93560 | |
| 035 | ▼a (KERIS)BIB000012770270 | |
| 040 | ▼a 211062 ▼c 211062 ▼d 211009 | |
| 082 | 0 4 | ▼a 005.7565 ▼2 22 |
| 085 | ▼a 005.7565 ▼2 DDCK | |
| 090 | ▼a 005.7565 ▼b 2012z2 | |
| 100 | 1 | ▼a 이성욱 ▼0 AUTH(211009)23693 |
| 245 | 2 0 | ▼a (개발자와 DBA를 위한) real MySQL / ▼d 이성욱 지음 |
| 260 | ▼a 파주 : ▼b 위키북스, ▼c 2012 | |
| 300 | ▼a 1027 p. : ▼b 삽화, 도표 ; ▼c 25 cm | |
| 440 | 0 0 | ▼a 위키북스 오픈소스 & 웹 시리즈 ; ▼v 038 |
| 500 | ▼a 부록: 1. MySQL 5.1(InnoDB Plugin 1.0)의 새로운 기능, 2. MySQL 5.5(InnoDB Plugin 1.1)의 새로운 기능, 3. MySQL 5.6의 새로운 기능 | |
| 500 | ▼a 색인수록 | |
| 945 | ▼a KLPA |
소장정보
| No. | 소장처 | 청구기호 | 등록번호 | 도서상태 | 반납예정일 | 예약 | 서비스 |
|---|---|---|---|---|---|---|---|
| No. 1 | 소장처 중앙도서관/제2자료실(3층)/ | 청구기호 005.7565 2012z2 | 등록번호 111667016 (13회 대출) | 도서상태 대출가능 | 반납예정일 | 예약 | 서비스 |
| No. 2 | 소장처 과학도서관/Sci-Info(1층서고)/ | 청구기호 005.7565 2012z2 | 등록번호 121220090 (20회 대출) | 도서상태 대출가능 | 반납예정일 | 예약 | 서비스 |
| No. 3 | 소장처 과학도서관/Sci-Info(1층서고)/ | 청구기호 005.7565 2012z2 | 등록번호 121220091 (19회 대출) | 도서상태 대출가능 | 반납예정일 | 예약 | 서비스 |
| No. 4 | 소장처 세종학술정보원/과학기술실(5층)/ | 청구기호 005.7565 2012z2 | 등록번호 151342592 | 도서상태 대출가능 | 반납예정일 | 예약 | 서비스 |
| No. | 소장처 | 청구기호 | 등록번호 | 도서상태 | 반납예정일 | 예약 | 서비스 |
|---|---|---|---|---|---|---|---|
| No. 1 | 소장처 중앙도서관/제2자료실(3층)/ | 청구기호 005.7565 2012z2 | 등록번호 111667016 (13회 대출) | 도서상태 대출가능 | 반납예정일 | 예약 | 서비스 |
| No. | 소장처 | 청구기호 | 등록번호 | 도서상태 | 반납예정일 | 예약 | 서비스 |
|---|---|---|---|---|---|---|---|
| No. 1 | 소장처 과학도서관/Sci-Info(1층서고)/ | 청구기호 005.7565 2012z2 | 등록번호 121220090 (20회 대출) | 도서상태 대출가능 | 반납예정일 | 예약 | 서비스 |
| No. 2 | 소장처 과학도서관/Sci-Info(1층서고)/ | 청구기호 005.7565 2012z2 | 등록번호 121220091 (19회 대출) | 도서상태 대출가능 | 반납예정일 | 예약 | 서비스 |
| No. | 소장처 | 청구기호 | 등록번호 | 도서상태 | 반납예정일 | 예약 | 서비스 |
|---|---|---|---|---|---|---|---|
| No. 1 | 소장처 세종학술정보원/과학기술실(5층)/ | 청구기호 005.7565 2012z2 | 등록번호 151342592 | 도서상태 대출가능 | 반납예정일 | 예약 | 서비스 |
컨텐츠정보
책소개
지금까지의 매뉴얼 번역이나 단편적인 지식 수준을 벗어나 저자와 다른 많은 MySQL 전문가의 경험과 노력의 결과를 여러분에게 전해줄 것이다. 또한 이 책에서는 많은 그림과 벤치마크 결과를 함께 수록해 MySQL을 처음 접하는 사용자도 쉽게 이해할 수 있게 구성했다.
이 책을 계기로 지금까지 지니고 있었던 MySQL에 대한 선입견 대신 MySQL의 새로운 면모를 익히고 경험하게 되리라 확신한다. 만약 MySQL을 공부하고 있거나 MySQL을 이용한 서비스 개발이나 운영을 해야 한다면 지금 당장 이 책을 살펴보길 권장한다. 지금까지 알고 있는 것들을 넘어서서 새로운 MySQL을 경험하게 될 것이다.
Real MySQL은 기본적인 SQL 문법 소개나 매뉴얼의 번역 수준을 벗어나서 MySQL을 이용하는 애플리케이션 개발이나 운영을 통해 얻은 경험과 지식, 그리고 반드시 알고 있어야 할 주의사항 위주로 내용을 구성했다. 이 책을 처음부터 끝까지 다 읽는다면 더없이 좋겠지만, 필요하거나 관심 있는 내용 위주로 살펴봐도 지금까지 가지고 있었던 많은 고민거리를 해결할 수 있을 것이다.
★ 이 책에서 다루는 내용 ★
o MySQL 서버의 아키텍처와 MySQL 설치
o 인덱스의 종류와 구조 및 활용
o 쿼리의 실행 계획 분석 및 최적화
o MySQL 서버와 연동하는 프로그램 개발
o 스토어드 프로그램 개발 및 사용자 변수 활용
o 데이터 모델링 및 최적의 데이터 타입 선정
o 개발을 위한 베스트 프랙티스
o MySQL 서버 응급처치
Real MySQL, MySQL의 새로운 발견!
더 이상 MySQL은 커뮤니티나 소셜 네트워크 서비스와 떼어놓을 수 없는 관계에 있다는 것은 누구나 잘 알고 있을 것이다. 하지만 MySQL은 여기서 그치지 않고 빌링이나 결제와 같은 금전적인 처리용으로도 많이 사용되고 있는데, 이는 MySQL의 트랜잭션 처리나 안정성이 오라클과 비교해서 전혀 뒤처지지 않음을 의미한다고 볼 수 있다. 사실 MySQL(InnoDB)의 내부 처리 방식은 오라클의 그것과 거의 다르지 않기 때문에 이는 당연한 결과라고 볼 수 있다.
이 책은 지금까지의 매뉴얼 번역이나 단편적인 지식 수준을 벗어나 저자와 다른 많은 MySQL 전문가의 경험과 노력의 결과를 여러분에게 전해줄 것이다. 또한 이 책에서는 많은 그림과 벤치마크 결과를 함께 수록해 MySQL을 처음 접하는 사용자도 쉽게 이해할 수 있게 구성했다. 이 책을 계기로 지금까지 지니고 있었던 MySQL에 대한 선입견 대신 MySQL의 새로운 면모를 익히고 경험하게 되리라 확신한다.
만약 MySQL을 공부하고 있거나 MySQL을 이용한 서비스 개발이나 운영을 해야 한다면 지금 당장 이 책을 살펴보길 권장한다. 지금까지 알고 있는 것들을 넘어서서 새로운 MySQL을 경험하게 될 것이다.
【RealMySQL 네이버 카페】
아래 카페에서 이 책에 대한 질의 응답이나 소스 코드를 내려받을 수 있다.
http://cafe.naver.com/realmysql
정보제공 :
저자소개
목차
목차 01장 소개 1.1 MySQL 소개 = 22 1.2 왜 MySQL인가? = 23 02장 설치와 설정 2.1 MySQL 다운로드 = 27 2.2 MySQL 서버 설치 = 29 2.2.1 리눅스에 설치 = 30 2.2.2 윈도우에 설치(MSI) = 36 2.3 서버 설정 = 44 2.3.1 설정 파일의 구성 = 45 2.3.2 MySQL 시스템 변수의 특징 = 46 2.3.3 글로벌 변수와 세션 변수 = 48 2.3.4 동적 변수와 정적 변수 = 49 2.3.5 my.cnf 설정 파일 = 51 2.4 MySQL 서버의 시작과 종료 = 74 2.4.1 시작과 종료 = 74 2.4.2 서버 연결 테스트 = 76 2.5 MySQL 복제 구축 = 79 2.5.1 설정 준비 = 79 2.5.2 복제 계정 준비 = 81 2.5.3 데이터 복사 = 81 2.5.4 복제 시작 = 82 2.6 권한 관리 = 84 2.6.1 사용자의 식별 = 84 2.6.2 권한 = 85 2.7 예제 데이터 적재 = 91 2.8 전문 검색을 위한 MySQL 설치 = 93 2.8.1 MySQL의 내장 전문 검색 엔진 = 94 2.8.2 MySQL 5.0 버전의 트리톤 설치 = 94 2.8.3 MySQL 5.1 버전의 mGroonga 설치 = 97 03장 아키텍처 3.1 MySQL 아키텍처 = 102 3.1.1 MySQL의 전체 구조 = 102 3.1.2 MySQL 쓰레딩 구조 = 103 3.1.3 메모리 할당 및 사용 구조 = 105 3.1.4 플러그-인 스토리지 엔진 모델 = 106 3.1.5 쿼리 실행 구조 = 110 3.1.6 복제(Replication) = 111 3.1.7 쿼리 캐시 = 114 3.2 InnoDB 스토리지 엔진 아키텍처 = 119 3.2.1 InnoDB 스토리지 엔진의 특성 = 120 3.2.2 InnoDB 버퍼 풀 = 121 3.2.3 언두(Undo) 로그 = 122 3.2.4 인서트 버퍼(Insert Buffer) = 122 3.2.5 리두(Redo) 로그 및 로그 버퍼 = 123 3.2.6 MVCC(Multi Version Concurrency Control) = 124 3.2.7 잠금 없는 일관된 읽기(Non-locking consistent read) = 127 3.2.8 InnoDB와 MyISAM 스토리지 엔진 비교 = 127 3.2.9 InnoDB와 MEMORY(HEAP)스토리지 엔진 비교 = 131 3.3 MyISAM 스토리지 엔진 아키텍처 = 133 3.3.1 키 캐시 = 133 3.3.2 운영체제의 캐시 및 버퍼 = 135 3.4 MEMORY 스토리지 엔진 아키텍처 = 135 3.4.1 주의 사항 = 136 3.4.2 MEMORY 스토리지 엔진의 용도 = 136 3.5 NDB 클러스터 스토리지 엔진 = 137 3.5.1 NDB 클러스터의 특성 = 137 3.5.2 NDB 클러스터의 아키텍처 = 140 3.5.3 클러스터 간의 복제 구성 = 146 3.5.4 NDB 클러스터의 성능 = 147 3.5.5 NDB 클러스터의 네트워크 영향 = 150 3.5.6 NDB 클러스터의 용도 = 151 3.6 TOKUDB 스토리지 엔진 = 151 3.6.1 프랙탈 트리(Fractal Tree) 인덱스 지원 = 152 3.6.2 대용량 데이터와 빠른 INSERT 처리 = 152 3.6.3 트랜잭션 및 잠금 처리 = 153 3.6.4 그 이외의 특징 = 153 3.6.5 TokuDB의 주 용도 = 153 3.7 전문 검색 엔진 = 154 3.7.1 트리톤 전문 검색 엔진 = 154 3.7.2 mGroonga 전문 검색 엔진(플러그인) = 155 3.7.3 스핑크스 전문 검색 엔진 = 157 3.8 MySQL 로그 파일 = 158 3.8.1 에러 로그 파일 = 158 3.8.2 제너럴 쿼리 로그 파일(제너럴 로그 파일, General log) = 160 3.8.3 슬로우 쿼리 로그 = 161 3.8.4 바이너리 로그와 릴레이 로그 = 163 04장 트랜잭션과 잠금 4.1 트랜잭션 = 166 4.1.1 MySQL에서의 트랜잭션 = 166 4.1.2 주의사항 = 169 4.2 MySQL 엔진의 잠금 = 171 4.2.1 글로벌 락 = 171 4.2.2 테이블 락(TABLE LOCK) = 172 4.2.3 유저 락(USER LOCK) = 172 4.2.4 네임 락 = 173 4.3 MyISAM과 MEMORY 스토리지 엔진의 잠금 = 174 4.3.1 잠금 획득 = 174 4.3.2 잠금 튜닝 = 174 4.3.3 테이블 수준의 잠금 확인 및 해제 = 175 4.4 InnoDB 스토리지 엔진의 잠금 = 177 4.4.1 InnoDB의 잠금 방식 = 178 4.4.2 InnoDB의 잠금 종류 = 178 4.4.3 인덱스와 잠금 = 181 4.4.4 트랜잭션 격리 수준과 잠금 = 183 4.4.5 레코드 수준의 잠금 확인 및 해제 = 184 4.5 MySQL의 격리 수준 = 191 4.5.1 READ UNCOMMITTED = 192 4.5.2 READ COMMITTED = 193 4.5.3 REPEATABLE READ = 195 4.5.4 SERIALIZABLE = 198 4.5.5 REPEATABLE READ 격리 수준과 READ COMMITTED 격리 수준의 성능 비교 = 198 05장 인덱스 5.1 디스크 읽기 방식 = 201 5.1.1 저장 매체 = 201 5.1.2 디스크 드라이브와 솔리드 스테이트 드라이브 = 202 5.1.3 랜덤 I/O와 순차 I/O = 204 5.2 인덱스란? = 206 5.3 B-Tree 인덱스 = 208 5.3.1 구조 및 특성 = 209 5.3.2 B-Tree 인덱스 키 추가 및 삭제 = 211 5.3.3 B-Tree 인덱스 사용에 영향을미치는 요소 = 214 5.3.4 B-Tree 인덱스를 통한 데이터 읽기 = 218 5.3.5 다중 칼럼(Multi-column) 인덱스 = 223 5.3.6 B-Tree 인덱스의 정렬 및 스캔 방향 = 225 5.3.7 B-Tree 인덱스의 가용성과 효율성 = 228 5.4 해시(Hash) 인덱스 = 233 5.4.1 구조 및 특성 = 233 5.4.2 해시 인덱스의 가용성 및 효율성 = 235 5.5 R-Tree 인덱스 = 236 5.5.1 구조 및 특성 = 237 5.5.2 R-Tree 인덱스의 용도 = 240 5.6 Fractal-Tree 인덱스 = 241 5.6.1 Fractal-Tree의 특성 = 241 5.6.2 Fractal-Tree의 가용성과 효율성 = 243 5.7 전문 검색(Full Text search) 인덱스 = 244 5.7.1 인덱스 알고리즘 = 244 5.7.2 구분자와 n그램의 차이 = 246 5.7.3 전문 검색 인덱스의 가용성 = 249 5.8 비트맵 인덱스와 함수 기반 인덱스 = 250 5.9 클러스터링 인덱스 = 250 5.9.1 클러스터링 인덱스 = 250 5.9.2 보조 인덱스(Secondary index)에 미치는 영향 = 253 5.9.3 클러스터 인덱스의 장점과 단점 = 254 5.9.4 클러스터 테이블 사용시 주의사항 = 255 5.10 유니크 인덱스 = 256 5.10.1 유니크 인덱스와 일반 보조 인덱스의 비교 = 256 5.10.2 유니크 인덱스 사용 시 주의사항 = 257 5.11 외래키 = 258 5.11.1 자식 테이블의 변경이 대기하는 경우 = 259 5.11.2 부모 테이블의 변경 작업이 대기하는 경우 = 260 5.12 기타 주의사항 = 260 06장 실행 계획 6.1 개요 = 263 6.1.1 쿼리 실행 절차 = 263 6.1.2 옵티마이저의 종류 = 265 6.1.3 통계 정보 = 265 6.2 실행 계획 분석 = 266 6.2.1 id 칼럼 = 268 6.2.2 select_type 칼럼 = 269 6.2.3 table 칼럼 = 277 6.2.4 type 칼럼 = 280 6.2.5 possible_keys = 292 6.2.6 key = 292 6.2.7 key_len = 293 6.2.8 ref = 295 6.2.9 rows = 296 6.2.10 Extra = 298 6.2.11 EXPLAIN EXTENDED(Filtered 칼럼) = 326 6.2.12 EXPLAIN EXTENDED(추가 옵티마이저 정보) = 327 6.2.13 EXPLAIN PARTITIONS(Partitions 칼럼) = 328 6.3 MySQL의 주요 처리 방식 = 330 6.3.1 풀 테이블 스캔 = 330 6.3.2 ORDER BY 처리(Using filesort) = 331 6.3.3 GROUP BY 처리 = 347 6.3.4 DISTINCT 처리 = 351 6.3.5 임시 테이블(Using temporary) = 354 6.3.6 테이블 조인 = 358 6.4 실행 계획 분석 시 주의사항 = 373 6.4.1 Select_type 칼럼의 주의 대상 = 373 6.4.2 Type 칼럼의 주의 대상 = 374 6.4.3 Key 칼럼의 주의 대상 = 374 6.4.4 Rows 칼럼의 주의 대상 = 374 6.4.5 Extra 칼럼의 주의 대상 = 374 07장 쿼리 작성 및 최적화 7.1 쿼리와 연관된 시스템 설정 = 377 7.1.1 SQL 모드 = 378 7.1.2 영문 대소문자 구분 = 379 7.1.3 MySQL 예약어 = 380 7.2 매뉴얼의 SQL 문법 표기를 읽는 방법 = 380 7.3 MySQL 연산자와 내장 함수 = 382 7.3.1 리터럴 표기법 = 382 7.3.2 MySQL 연산자 = 385 7.3.3 MySQL 내장 함수 = 397 7.3.4 SQL 주석 = 417 7.4 SELECT = 419 7.4.1 SELECT 각 절의 처리 순서 = 419 7.4.2 WHERE 절과 GROUP BY 절,그리고 ORDER BY 절의 인덱스 사용 = 422 7.4.3 WHERE 절의 비교 조건 사용 시 주의사항 = 432 7.4.4 DISTINCT = 438 7.4.5 LIMIT n = 441 7.4.6 JOIN = 443 7.4.7 GROUP BY = 461 7.4.8 ORDER BY = 468 7.4.9 서브 쿼리 = 475 7.4.10 집합 연산 = 487 7.4.11 LOCK IN SHARE MODE와 FOR UPDATE = 491 7.4.12 SELECT INTO OUTFILE = 492 7.5 INSERT = 494 7.5.1 INSERT와 AUTO_INCREMENT = 495 7.5.2 INSERT IGNORE = 501 7.5.3 REPLACE = 502 7.5.4 INSERT INTO …ON DUPLICATE KEY UPDATE … = 504 7.5.5 INSERT ... SELECT = 506 7.5.6 LOAD DATA(LOCAL) INFILE … = 506 7.6 UPDATE = 516 7.6.1 UPDATE … ORDER BY … LIMIT n = 516 7.6.2 JOIN UPDATE = 517 7.7 DELETE = 520 7.7.1 DELETE … ORDER BY … LIMIT n = 520 7.7.2 JOIN DELETE = 520 7.8 스키마 조작 (DDL) = 522 7.8.1 데이터베이스 = 522 7.8.2 테이블 = 524 7.8.3 칼럼 변경 = 535 7.8.4 인덱스 변경 = 538 7.8.5 프로세스 조회 = 542 7.8.6 프로세스 강제 종료 = 544 7.8.7 시스템 변수 조회 및 변경 = 544 7.8.8 경고나 에러 조회 = 545 7.8.9 권한 조회 = 546 7.9 SQL 힌트 = 546 7.9.1 힌트의 사용법 = 547 7.9.2 STRAIGHT_JOIN = 547 7.9.3 USE INDEX/FORCE INDEX/IGNORE INDEX = 551 7.9.4 SQL_CACHE/SQL_NO_CACHE = 553 7.9.5 SQL_CALC_FOUND_ROWS = 555 7.9.6 기타 힌트 = 557 7.10 쿼리 성능 테스트 = 557 7.10.1 쿼리의 성능에 영향을 미치는 요소 = 557 7.10.2 쿼리의 성능 테스트 = 560 7.10.3 쿼리 프로파일링 = 562 08장 확장 기능 8.1 전문 검색 = 567 8.1.1 전문 검색 엔진의 종류와 특성 = 567 8.1.2 MySQL 빌트인 전문 검색 = 570 8.1.3 트리톤 전문 검색 = 578 8.1.4 mGroonga 전문 검색 = 584 8.2 공간 검색 = 587 8.2.1 R-Tree 인덱스를 사용하는 이유 = 587 8.2.2 위도나 경도 정보를 이용한 거리 계산 = 589 8.2.3 R-Tree를 이용한 위치 검색 = 592 09장 사용자 정의 변수 9.1 사용자 정의 변수 소개 = 597 9.2 사용자 변수의 기본 활용 = 600 9.3 사용자 변수의 적용 예제 = 603 9.3.1 N 번째 레코드만 가져오기 = 603 9.3.2 누적 합계 구하기 = 604 9.3.3 그룹별 랭킹 구하기 = 605 9.3.4 랭킹 업데이트하기 = 608 9.3.5 GROUP BY와 ORDER BY가 인덱스를 사용하지 못하는 쿼리 = 609 9.4 주의사항 = 611 10장 파티션 10.1 파티션의 개요 = 613 10.1.1 파티션을 사용하는 이유 = 613 10.1.2 MySQL 파티션의 내부 처리 = 615 10.2 파티션 주의사항 = 620 10.2.1 파티션의 제한 사항 = 620 10.2.2 파티션 사용시 주의사항 = 621 10.3 MySQL 파티션의 종류 = 625 10.3.1 레인지 파티션 = 625 10.3.2 리스트 파티션 = 628 10.3.3 해시 파티션 = 630 10.3.4 키 파티션 = 634 10.3.5 리니어 해시 파티션/리니어 키 파티션 = 636 10.3.6 서브 파티션 = 637 10.3.7 파티션 테이블의 실행 계획 = 638 10.3.8 파티션 테이블 관련 벤치마킹 = 640 10.3.9 파티션 기능에 대한 결론 = 645 11장 스토어드 프로그램 11.1 스토어드 프로그램의 장단점 = 647 11.1.1 스토어드 프로그램의 장점 = 647 11.1.2 스토어드 프로그램의 단점 = 649 11.2 스토어드 프로그램의 문법 = 650 11.2.1 예제 테스트 시 주의사항 = 650 11.2.2 스토어드 프로시저 = 651 11.2.3 스토어드 함수 = 656 11.2.4 트리거 = 659 11.2.5 이벤트 = 662 11.2.6 스토어드 프로그램 본문(Body) 작성 = 668 11.3 스토어드 프로그램의 권한 및 옵션 = 692 11.3.1 DEFINER 와 SQL SECURITY 옵션 = 693 11.3.2 스토어드 프로그램의 권한 = 694 11.3.3 DETERMINISTIC과 NOT DETERMINISTIC 옵션 = 698 11.4 스토어드 프로그램의 참고 및 주의사항 = 700 11.4.1 한글 처리 = 700 11.4.2 스토어드 프로그램과 세션 변수 = 702 11.4.3 스토어드 프로시저와 재귀 호출(Recursive call) = 703 11.4.4 중첩된 커서 사용 = 704 12장 쿼리 종류별 잠금 12.1 InnoDB의 기본 잠금 방식 = 709 12.1.1 SELECT = 710 12.1.2 INSERT, UPDATE, DELETE = 711 12.2 SQL 문장별로 사용하는 잠금 = 715 12.2.1 SELECT 쿼리의 잠금 = 715 12.2.2 INSERT 쿼리의 잠금 = 716 12.2.3 UPDATE 쿼리의 잠금 = 721 12.2.4 DELETE 쿼리의 잠금 = 722 12.2.5 DDL 문장의 잠금 = 722 12.2.6 InnoDB에서 여러 쿼리 패턴 간의 잠금 대기 = 723 12.3 InnoDB에서 데드락 만들기 = 726 12.3.1 패턴 1(상호 거래 관련) = 727 12.3.2 패턴 2(유니크 인덱스 관련) = 728 12.3.3 패턴 3(외래키 관련) = 730 12.3.4 패턴 4(서로 다른 인덱스를 통한 잠금) = 731 13장 프로그램 연동 13.1 자바 = 735 13.1.1 JDBC 버전 = 735 13.1.2 MySQL Connector/J를 이용한 개발 = 737 13.2 C/C++ = 778 13.2.1 주요 헤더 파일과 MySQL 예제 = 779 13.2.2 에러 처리 = 780 13.2.3 프로그램의 컴파일 = 781 13.2.4 MySQL 서버 접속 = 784 13.2.5 설정 파일 읽기 = 786 13.2.6 SELECT 실행 = 797 13.2.7 INSERT/UPDATE/DELETE 실행 = 805 13.2.8 다중 문장 실행과 다중 결과 셋 가져오기 = 809 13.2.9 커넥션 옵션 = 812 13.2.10 프리페어 스테이트먼트 사용 = 814 14장 데이터 모델링 14.1 논리 모델링 = 823 14.1.1 모델링 용어 = 824 14.1.2 용어집 = 825 14.1.3 엔터티 = 827 14.1.4 어트리뷰트(속성) = 830 14.1.5 식별자(프라이머리 키) = 835 14.1.6 관계(릴레이션) = 836 14.1.7 엔터티의 통합 = 845 14.1.8 관계의 통합 = 846 14.1.9 모델 정규화 = 847 14.2 물리 모델링 = 852 14.2.1 프라이머리 키 선택 = 852 14.2.2 데이터 타입 선정 = 854 14.2.3 반정규화 = 859 15장 데이터 타입 15.1 문자열(CHAR와 VARCHAR) = 866 15.1.1 저장 공간 = 867 15.1.2 비교 방식 = 870 15.1.3 문자집합(캐릭터 셋) = 871 15.1.4 콜레이션(Collation) = 876 15.1.5 문자열 이스케이프 처리 = 881 15.2 숫자 = 883 15.2.1 정수 = 884 15.2.2 부동 소수점 = 885 15.2.3 DECIMAL = 886 15.2.4 정수 타입의 칼럼을 생성할 때의 주의사항 = 886 15.2.5 자동 증가(AUTO_INCREMENT) 옵션 사용 = 888 15.3 날짜와 시간 = 890 15.3.1 TIMESTAMP 타입의 옵션 = 893 15.3.2 타임 존 등록 및 사용 = 897 15.4 ENUM과 SET = 899 15.4.1 ENUM = 899 15.4.2 SET = 902 15.5 TEXT, BLOB = 904 15.6 공간(Spatial) 데이터 타입 = 906 15.6.1 POINT 타입 = 907 15.6.2 LINESTRING 타입 = 908 15.6.3 POLYGON 타입 = 909 15.6.4 GEOMETRY 타입 = 910 16장 베스트 프랙티스 16.1 임의(랜덤) 정렬 = 912 16.1.1 지금까지의 구현 = 912 16.1.2 인덱스를 이용한 임의 정렬 방법 = 913 16.2 페이징 쿼리 = 918 16.2.1 지금까지의 방법 = 919 16.2.2 불필요한 접근을 제거하기 위한 페이징 쿼리 = 921 16.3 MySQL에서 시퀀스 구현 = 922 16.3.1 시퀀스용 테이블 준비 = 923 16.3.2 시퀀스를 위한 스토어드 함수 = 923 16.3.3 여러 시퀀스 처리하기 = 925 16.3.4 시퀀스 사용 시 주의사항 = 926 16.4 큰 문자열 칼럼의 인덱스(해시) = 928 16.5 테이블 파티션 = 932 16.6 SNS의 타임라인 구현 = 934 16.6.1 예제 시나리오 = 935 16.6.2 인덱스 테이블 사용 = 936 16.6.3 Try&Fail 쿼리 = 938 16.7 MySQL 표준 설정 = 946 16.7.1 MySQL 표준 설정의 필요성 = 947 16.7.2 표준 설정의 예시 = 948 16.8 복제를 사용하지 않는 MySQL의 설정 = 950 16.9 MySQL 복제 구축 = 951 16.9.1 MySQL 복제의 형태 = 951 16.9.2 확장(스케일 아웃) = 956 16.9.3 가용성 = 957 16.9.4 복제가 구축된 MySQL에서의 작업 = 957 16.10 SQL 작성 표준 = 958 16.10.1 조인 조건은 항상 ON 절에 기재 = 958 16.10.2 테이블 별칭(Alias) 사용 및 칼럼 명에 테이블 별칭 포함 = 959 16.10.3 서버 사이드 프리페어 스테이트먼트 사용 = 959 16.10.4 FULL GROUP BY 사용 = 960 16.10.5 DELETE, UPDATE 쿼리에서 ORDER BY LIMIT 사용 자제 = 960 16.10.6 문자열 리터럴 표기는 홑 따옴표만 사용 = 960 16.10.7 서브쿼리는 조인으로 변경 = 961 16.10.8 UNION [ALL]은 사용 자제 = 961 16.10.9 스토어드 함수는 가능하면 DETERMINISTIC으로 정의 = 962 16.10.10 스토어드 프로그램에서는 예외 처리 코드를 작성 = 962 16.10.11 UPDATE, DELETE 쿼리와 적용 건수(Affected row counts) 체크 = 962 16.10.12 숫자 값은 반드시 숫자 타입의 칼럼으로 정의 = 963 16.11 하드웨어와 플랫폼 선정 = 963 16.11.1 하드웨어 선정 = 963 16.11.2 운영체제의 파일 시스템 선정 = 966 16.12 백업 및 모니터링 = 969 16.12.1 백업(EnterpriseBackup과 mysqldump) = 970 16.12.2 모니터링 = 973 16.13 스키마 검토 = 975 17장 응급 처치 17.1 서버 과부하 = 978 17.1.1 운영체제의 유틸리티를 이용해 장비의 부하 확인 = 978 17.1.2 MySQL 서버의 에러 로그 확인 = 982 17.1.3 MySQL 서버의 프로세스 리스트 확인 = 983 17.1.4 MySQL 서버의 최대 커넥션 설정 확인 = 984 17.1.5 MySQL 서버의 슬로우 쿼리 분석 = 985 17.1.6 쿼리의 실행 빈도 확인 = 986 17.1.7 각 원인별 조치 = 988 17.2 MySQL 서버 셧다운 = 989 17.3 MySQL 복구(데이터 파일 손상) = 990 17.3.1 MyISAM = 990 17.3.2 InnoDB = 990 17.4 테이블 메타 정보의 불일치 = 993 17.5 복제가 멈추었을 때 = 995 17.6 경고 메시지로 에러 로그 파일이 커질 때 = 997 17.7 바이너리 로그로 디스크가 꽉 찬 경우 = 998 17.8 마스터 MySQL 서버에서 함수 생성 오류 = 998 17.9 MySQL의 DB명 변경 = 999 17.10 DB의 테이블 생성 DDL만 덤프 = 999 17.11 mysqldump의 결과를 다른 이름의 DB로 적재 = 1000 17.12 테이블이나 레코드의 잠금 해결 = 1001 17.13 InnoDB의 잠금 대기 시간 초과 = 1001 17.14 MySQL 서버의 호스트 잠금 = 1002 부록 A. MySQL 5.1(InnoDB Plugin 1.0) 새로운 기능 A.1 MySQL 5.1의 신기능 = 1004 A.1.1 파티션 = 1004 A.1.2 레코드 기반의복제(Row-based replication) = 1004 A.1.3 플러그인 API = 1005 A.1.4 이벤트 스케줄러 = 1005 A.1.5 서버 로그 테이블 = 1005 A.2 InnoDB 플러그인 1.0의 신기능 = 1005 A.2.1 InnoDB의 빠른 인덱스 생성 = 1006 A.2.2 InnoDB 데이터 압축 = 1007 A.2.3 BLOB이나 TEXT 타입 관리 = 1007 A.2.4 InnoDB 파일 포맷 관리 = 1008 A.2.5 InnoDB INFORMATION_SCHEMA 테이블 = 1008 A.2.6 확장성 개선을 위한 빠른 잠금 처리 = 1009 A.2.7 운영체제의 메모리 할당 기능 사용 = 1010 A.2.8 InnoDB 인서트 버퍼 제어 = 1010 A.2.9 Adaptive Hash Index 제어 = 1011 A.2.10 Read Ahead 알고리즘의 개선 = 1011 A.2.11 다중 백그라운드 I/O 스레드 = 1012 A.2.12 그룹 커밋 = 1012 A.2.13 마스터 스레드의 I/O 성능 제어 = 1013 A.2.14 더티 페이지의 플러시 제어 = 1013 A.2.15 Spin loop에서 PAUSE 사용 = 1014 A.2.16 버퍼 풀의 관리 기능 개선 = 1014 A.2.17 여러 시스템 설정의 동적인 제어 = 1015 A.2.18 TRUNCATE TABLE 시에 테이블 스페이스 공간 반납 = 1015 A.2.19 InnoDB의 통계 수집을 위한 페이지 샘플링 수 조절 = 1016 부록 B. MySQL 5.5 (InnoDB Plugin 1.1) 신기능 B.1 MySQL 서버의 개선 사항 = 1018 B.1.1 스레드 풀 = 1018 B.1.2 사용자 인증 플러그인 아키텍처 = 1018 B.1.3 반동기 복제(Semi-synchronous Replication) = 1019 B.1.4 유니코드 지원 확장 = 1019 B.1.5 기본 스토리지 엔진의 변경 = 1020 B.1.6 SIGNAL과 RESIGNAL 기능 추가 = 1020 B.1.7 파티션 기능 개선 = 1020 B.2 InnoDB 플러그인 1.1의 개선 사항 = 1021 B.2.1 인덱스 생성 방식 변경 = 1021 B.2.2 트랜잭션 복구 성능 향상 = 1021 B.2.3 InnoDB 성능 진단을 위한 PERFORMANCE_SCHEMA = 1022 B.2.4 다중 버퍼 풀 = 1022 B.2.5 다중 롤백 세그먼트 = 1022 B.2.6 버퍼 풀 관련 뮤텍스 개선 = 1023 B.2.7 인서트 버퍼 처리 개선 = 1023 B.2.8 비동기화된 디스크 I/O = 1023 부록 C. MySQL 5.6 신기능 C.1 InnoDB 테이블을 위한 풀 텍스트 검색 = 1025 C.2 InnoDB의 리두 로그 파일 크기 = 1025 C.3 언두 테이블 스페이스 = 1025 C.4 InnoDB 버퍼 풀의 자동 워밍 업 = 1026 C.5 InnoDB의 페이지 크기 조정 = 1026 C.6 멀티 스레드 슬레이브 = 1026 C.7 Memcached를 통한 NoSQL 확장 = 1027



