개발자와 DBA를 위한 Real MySQL
해외주문/바로드림/제휴사주문/업체배송건의 경우 1+1 증정상품이 발송되지 않습니다.
패키지
북카드
키워드 Pick
키워드 Pick 안내
관심 키워드를 주제로 다른 연관 도서를 다양하게 찾아 볼 수 있는 서비스로, 클릭 시 관심 키워드를 주제로 한 다양한 책으로 이동할 수 있습니다.
키워드는 최근 많이 찾는 순으로 정렬됩니다.
작가정보
목차
- ▣ 01장_소개
1.1 MySQL 소개
1.2 왜 MySQL인가?
▣ 02장_설치와 설정
2.1 MySQL 다운로드
2.2 MySQL 서버 설치
____2.2.1 리눅스에 설치
____2.2.2 윈도우에 설치(MSI)
2.3 서버 설정
____2.3.1 설정 파일의 구성
____2.3.2 MySQL 시스템 변수의 특징
____2.3.3 글로벌 변수와 세션 변수
____2.3.4 동적 변수와 정적 변수
____2.3.5 my.cnf 설정 파일
2.4 MySQL 서버의 시작과 종료
____2.4.1 시작과 종료
____2.4.2 서버 연결 테스트
2.5 MySQL 복제 구축
____2.5.1 설정 준비
____2.5.2 복제 계정 준비
____2.5.3 데이터 복사
____2.5.4 복제 시작
2.6 권한 관리
____2.6.1 사용자의 식별
____2.6.2 권한
2.7 예제 데이터 적재
2.8 전문 검색을 위한 MySQL 설치
____2.8.1 MySQL의 내장 전문 검색 엔진
____2.8.2 MySQL 5.0 버전의 트리톤 설치
____2.8.3 MySQL 5.1 버전의 mGroonga 설치
____2.8.5 mGroonga 설치 확인
▣ 03장_아키텍처
3.1 MySQL 아키텍처
____3.1.1 MySQL의 전체 구조
____3.1.2 MySQL 쓰레딩 구조
____3.1.3 메모리 할당 및 사용 구조
____3.1.4 플러그-인 스토리지 엔진 모델
____3.1.5 쿼리 실행 구조
____3.1.6 복제(Replication)
____3.1.7 쿼리 캐시
3.2 InnoDB 스토리지 엔진 아키텍처
____3.2.1 InnoDB 스토리지 엔진의 특성
____3.2.2 InnoDB 버퍼 풀
____3.2.3 언두(Undo) 로그
____3.2.4 인서트 버퍼(Insert Buffer)
____3.2.5 리두(Redo) 로그 및 로그 버퍼
____3.2.6 MVCC(Multi Version Concurrency Control)
____3.2.7 잠금 없는 일관된 읽기(Non-locking consistent read)
____3.2.8 InnoDB와 MyISAM 스토리지 엔진 비교
____3.2.9 InnoDB와 MEMORY(HEAP)스토리지 엔진 비교
3.3 MyISAM 스토리지 엔진 아키텍처
____3.3.1 키 캐시
____3.3.2 운영체제의 캐시 및 버퍼
3.4 MEMORY 스토리지 엔진 아키텍처
____3.4.1 주의 사항
____3.4.2 MEMORY 스토리지 엔진의 용도
3.5 NDB 클러스터 스토리지 엔진
____3.5.1 NDB 클러스터의 특성
____3.5.2 NDB 클러스터의 아키텍처
____3.5.3 클러스터 간의 복제 구성
____3.5.4 NDB 클러스터의 성능
____3.5.5 NDB 클러스터의 네트워크 영향
____3.5.6 NDB 클러스터의 용도
3.6 TOKUDB 스토리지 엔진
____3.6.1 프랙탈 트리(Fractal Tree) 인덱스 지원
____3.6.2 대용량 데이터와 빠른 INSERT 처리
____3.6.3 트랜잭션 및 잠금 처리
____3.6.4 그 이외의 특징
____3.6.5 TokuDB의 주 용도
3.7 전문 검색 엔진
____3.7.1 트리톤 전문 검색 엔진
____3.7.2 mGroonga 전문 검색 엔진(플러그인)
____3.7.3 스핑크스 전문 검색 엔진
3.8 MySQL 로그 파일
____3.8.1 에러 로그 파일
____3.8.2 제너럴 쿼리 로그 파일(제너럴 로그 파일, General log)
____3.8.3 슬로우 쿼리 로그
____3.8.4 바이너리 로그와 릴레이 로그
▣ 04장_트랜잭션과 잠금
4.1 트랜잭션
____4.1.1 MySQL에서의 트랜잭션
____4.1.2 주의사항
4.2 MySQL 엔진의 잠금
____4.2.1 글로벌 락
____4.2.2 테이블 락(TABLE LOCK)
____4.2.3 유저 락(USER LOCK)
____4.2.4 네임 락
4.3 MyISAM과 MEMORY 스토리지 엔진의 잠금
____4.3.1 잠금 획득
____4.3.2 잠금 튜닝
____4.3.3 테이블 수준의 잠금 확인 및 해제
4.4 InnoDB 스토리지 엔진의 잠금
____4.4.1 InnoDB의 잠금 방식
____4.4.2 InnoDB의 잠금 종류
____4.4.3 인덱스와 잠금
____4.4.4 트랜잭션 격리 수준과 잠금
____4.4.5 레코드 수준의 잠금 확인 및 해제
4.5 MySQL의 격리 수준
____4.5.1 READ UNCOMMITTED
____4.5.2 READ COMMITTED
____4.5.3 REPEATABLE READ
____4.5.4 SERIALIZABLE
____4.5.5 REPEATABLE READ 격리 수준과 READ COMMITTED 격리 수준의 성능 비교
▣ 05장_인덱스
5.1 디스크 읽기 방식
____5.1.1 저장 매체
____5.1.2 디스크 드라이브와 솔리드 스테이트 드라이브
____5.1.3 랜덤 I/O와 순차 I/O
5.2 인덱스란?
5.3 B-Tree 인덱스
____5.3.1 구조 및 특성
____5.3.2 B-Tree 인덱스 키 추가 및 삭제
____5.3.3 B-Tree 인덱스 사용에 영향을미치는 요소
____5.3.4 B-Tree 인덱스를 통한 데이터 읽기
____5.3.5 다중 칼럼(Multi-column) 인덱스
____5.3.6 B-Tree 인덱스의 정렬 및 스캔 방향
____5.3.7 B-Tree 인덱스의 가용성과 효율성
5.4 해시(Hash) 인덱스
____5.4.1 구조 및 특성
____5.4.2 해시 인덱스의 가용성 및 효율성
5.5 R-Tree 인덱스
____5.5.1 구조 및 특성
____5.5.2 R-Tree 인덱스의 용도
5.6 Fractal-Tree 인덱스
____5.6.1 Fractal-Tree의 특성
____5.6.2 Fractal-Tree의 가용성과 효율성
5.7 전문 검색(Full Text search) 인덱스
____5.7.1 인덱스 알고리즘
____5.7.2 구분자와 n그램의 차이
____5.7.3 전문 검색 인덱스의 가용성
5.8 비트맵 인덱스와 함수 기반 인덱스
5.9 클러스터링 인덱스
____5.9.1 클러스터링 인덱스
____5.9.2 보조 인덱스(Secondary index)에 미치는 영향
____5.9.3 클러스터 인덱스의 장점과 단점
____5.9.4 클러스터 테이블 사용시 주의사항
5.10 유니크 인덱스
____5.10.1 유니크 인덱스와 일반 보조 인덱스의 비교
____5.10.2 유니크 인덱스 사용 시 주의사항
5.11 외래키
____5.11.1 자식 테이블의 변경이 대기하는 경우
____5.11.2 부모 테이블의 변경 작업이 대기하는 경우
5.12 기타 주의사항
▣ 06장_실행 계획
6.1 개요
____6.1.1 쿼리 실행 절차
____6.1.2 옵티마이저의 종류
____6.1.3 통계 정보
6.2 실행 계획 분석
____6.2.1 id 칼럼
____6.2.2 select_type 칼럼
____6.2.3 table 칼럼
____6.2.4 type 칼럼
____6.2.5 possible_keys
____6.2.6 key
____6.2.7 key_len
____6.2.8 ref
____6.2.9 rows
____6.2.10 Extra
____6.2.11 EXPLAIN EXTENDED(Filtered 칼럼)
____6.2.12 EXPLAIN EXTENDED(추가 옵티마이저 정보)
6.3 MySQL의 주요 처리 방식
____6.3.1 풀 테이블 스캔
____6.3.2 ORDER BY 처리(Using filesort)
____6.3.3 GROUP BY 처리
____6.3.4 DISTINCT 처리
____6.3.5 임시 테이블(Using temporary)
____6.3.6 테이블 조인
6.4 실행 계획 분석 시 주의사항
____6.4.1 Select_type 칼럼의 주의 대상
____6.4.2 Type 칼럼의 주의 대상
____6.4.3 Key 칼럼의 주의 대상
____6.4.4 Rows 칼럼의 주의 대상
____6.4.5 Extra 칼럼의 주의 대상
▣ 07장_쿼리 작성 및 최적화
7.1 쿼리와 연관된 시스템 설정
____7.1.1 SQL 모드
____7.1.2 영문 대소문자 구분
____7.1.3 MySQL 예약어
7.2 매뉴얼의 SQL 문법 표기를 읽는 방법
7.3 MySQL 연산자와 내장 함수
____7.3.1 리터럴 표기법
____7.3.2 숫자
____7.3.3 날짜
____7.3.4 MySQL 연산자
____7.3.5 MySQL 내장 함수
____7.3.6 SQL 주석
7.4 SELECT
____7.4.1 SELECT 각 절의 처리 순서
____7.4.2 WHERE 절과 GROUP BY 절,그리고 ORDER BY 절의 인덱스 사용
____7.4.3 WHERE 절의 비교 조건 사용 시 주의사항
____7.4.4 DISTINCT
____7.4.5 LIMIT n
____7.4.6 JOIN
____7.4.7 GROUP BY
____7.4.8 ORDER BY
____7.4.9 서브 쿼리
____7.4.10 집합 연산
____7.4.11 SELECT INTO OUTFILE
7.5 INSERT
____7.5.1 INSERT와 AUTO_INCREMENT
____7.5.2 INSERT IGNORE
____7.5.3 REPLACE
____7.5.4 INSERT INTO …ON DUPLICATE KEY UPDATE …
____7.5.5 INSERT ... SELECT
____7.5.6 LOAD DATA(LOCAL) INFILE …
7.6 UPDATE
____7.6.1 UPDATE … ORDER BY … LIMIT n
____7.6.2 JOIN UPDATE
7.7 DELETE
____7.7.1 DELETE … ORDER BY … LIMIT n
____7.7.2 JOIN DELETE
7.8 스키마 조작 (DDL)
____7.8.1 데이터베이스
____7.8.2 테이블
____7.8.3 칼럼 변경
____7.8.4 인덱스 변경
____7.8.5 프로세스 조회
____7.8.6 프로세스 강제 종료
____7.8.7 시스템 변수 조회 및 변경
____7.8.8 경고나 에러 조회
____7.8.9 권한 조회
7.9 SQL 힌트
____7.9.1 힌트의 사용법
____7.9.2 STRAIGHT_JOIN
____7.9.3 USE INDEX / FORCE INDEX / IGNORE INDEX
____7.9.4 SQL_CACHE / SQL_NO_CACHE
____7.9.5 SQL_CALC_FOUND_ROWS
____7.9.6 기타 힌트
7.10 쿼리 성능 테스트
____7.10.1 쿼리의 성능에 영향을 미치는 요소
____7.10.2 쿼리의 성능 테스트
____7.10.3 쿼리 프로파일링
▣ 08장_확장 기능
8.1 전문 검색
____8.1.1 전문 검색 엔진의 종류와 특성
____8.1.2 MySQL 빌트인 전문 검색
____8.1.3 트리톤 전문 검색
____8.1.4 mGroonga 전문 검색
8.2 공간 검색
____8.2.1 R-Tree 인덱스를 사용하는 이유
____8.2.2 위도나 경도 정보를 이용한 거리 계산
____8.2.3 R-Tree를 이용한 위치 검색
▣ 09장_사용자 정의 변수
9.1 사용자 정의 변수 소개
9.2 사용자 변수의 기본 활용
9.3 사용자 변수의 적용 예제
____9.3.1 N 번째 레코드만 가져오기
____9.3.2 누적 합계 구하기
____9.3.3 그룹별 랭킹 구하기
____9.3.4 랭킹 업데이트하기
____9.3.5 GROUP BY와 ORDER BY가 인덱스를 사용하지 못하는 쿼리
9.4 주의사항
▣ 10장_파티션
10.1 파티션의 개요
____10.1.1 파티션을 사용하는 이유
____10.1.2 MySQL 파티션의 내부 처리
10.2 파티션 주의사항
____10.2.1 파티션의 제한 사항
____10.2.2 파티션 사용시 주의사항
10.3 MySQL 파티션의 종류
____10.3.1 레인지 파티션
____10.3.2 리스트 파티션
____10.3.3 해시 파티션
____10.3.4 키 파티션
____10.3.5 리니어 해시 파티션/리니어 키 파티션
____10.3.6 서브 파티션
____10.3.7 파티션 테이블의 실행 계획
____10.3.8 파티션 테이블 관련 벤치마킹
____10.3.9 파티션 기능에 대한 결론
▣ 11장_스토어드 프로그램
11.1 스토어드 프로그램의 장단점
____11.1.1 스토어드 프로그램의 장점
____11.1.2 스토어드 프로그램의 단점
11.2 스토어드 프로그램의 문법
____11.2.1예제 테스트 시 주의사항
____11.2.2 스토어드 프로시저
____11.2.3 스토어드 함수
____11.2.4 트리거
____11.2.5 이벤트
____11.2.6 스토어드 프로그램 본문(Body) 작성
11.3 스토어드 프로그램의 권한 및 옵션
____11.3.1 DEFINER 와 SQL SECURITY 옵션
____11.3.2 스토어드 프로그램의 권한
____11.3.3 DETERMINISTIC과 NOT DETERMINISTIC 옵션
11.4 스토어드 프로그램의 참고 및 주의사항
____11.4.1 한글 처리
____11.4.2 스토어드 프로그램과 세션 변수
____11.4.3 스토어드 프로시저와 재귀 호출(Recursive call)
____11.4.4 중첩된 커서 사용
▣ 12장_쿼리 종류별 잠금
12.1 InnoDB의 기본 잠금 방식
____12.1.1 SELECT
____12.1.2 INSERT, UPDATE, DELETE
12.2 SQL 문장별로 사용하는 잠금
____12.2.1 SELECT 쿼리의 잠금
____12.2.2 INSERT 쿼리의 잠금
____12.2.3 UPDATE 쿼리의 잠금
____12.2.4 DELETE 쿼리의 잠금
____12.2.5 DDL 문장의 잠금
____12.2.6 InnoDB에서 여러 쿼리 패턴 간의 잠금 대기
12.3 InnoDB에서 데드락 만들기
____12.3.1 패턴 1(상호 거래 관련)
____12.3.2 패턴 2(유니크 인덱스 관련)
____12.3.3 패턴 3(외래키 관련)
____12.3.4 패턴 4(서로 다른 인덱스를 통한 잠금)
▣ 13장_프로그램 연동
13.1 자바
____13.1.1 JDBC 버전
____13.1.2 MySQL Connector/J를 이용한 개발
13.2 C/C++
____13.2.1 주요 헤더 파일과 MySQL 예제
____13.2.2 에러 처리
____13.2.3 프로그램의 컴파일
____13.2.4 MySQL 서버 접속
____13.2.5 설정 파일 읽기
____13.2.6 SELECT 실행
____13.2.7 INSERT / UPDATE / DELETE 실행
____13.2.8 다중 문장 실행과 다중 결과 셋 가져오기
____13.2.9 커넥션 옵션
____13.2.10 프리페어 스테이트먼트 사용
▣ 14장_데이터 모델링
14.1 논리 모델링
____14.1.1 모델링 용어
____14.1.2 용어집
____14.1.3 엔터티
____14.1.4 식별자(프라이머리 키)
____14.1.5 관계(릴레이션)
____14.1.6 엔터티의 통합
____14.1.7 관계의 통합
____14.1.8 모델 정규화
14.2 물리 모델링
____14.2.1 프라이머리 키 선택
____14.2.2 데이터 타입 선정
____14.2.3 반정규화
▣ 15장_데이터 타입
15.1 문자열(CHAR와 VARCHAR)
____15.1.1 저장 공간
____15.1.2 비교 방식
____15.1.3 문자집합(캐릭터 셋)
____15.1.4 콜레이션(Collation)
____15.1.5 문자열 이스케이프 처리
15.2 숫자
____15.2.1 정수
____15.2.2 부동 소수점
____15.2.3 DECIMAL
____15.2.4 정수 타입의 칼럼을 생성할 때의 주의사항
____15.2.5 자동 증가(AUTO_INCREMENT) 옵션 사용
15.3 날짜와 시간
____15.3.1 TIMESTAMP 타입의 옵션
____15.3.2 타임 존 등록 및 사용
15.4 ENUM과 SET
____15.4.1 ENUM
____15.4.2 SET
15.5 TEXT, BLOB
15.6 공간(Spatial) 데이터 타입
____15.6.1 POINT 타입
____15.6.2 LINESTRING 타입
____15.6.3 POLYGON 타입
____15.6.4 GEOMETRY 타입
▣ 16장_베스트 프랙티스
16.1 임의(랜덤) 정렬
____16.1.1 지금까지의 구현
____16.1.2 인덱스를 이용한 임의 정렬 방법
16.2 페이징 쿼리
____16.2.1 지금까지의 방법
____16.2.2 불필요한 접근을 제거하기 위한 페이징 쿼리
16.3 MySQL에서 시퀀스 구현
____16.3.1 시퀀스용 테이블 준비
____16.3.2 시퀀스를 위한 스토어드 함수
____16.3.3 여러 시퀀스 처리하기
____16.3.4 시퀀스 사용 시 주의사항
16.4 큰 문자열 칼럼의 인덱스(해시)
16.5 테이블 파티션
16.6 SNS의 타임라인 구현
____16.6.1 예제 시나리오
____16.6.2 인덱스 테이블 사용
____16.6.3 Try & Fail 쿼리
16.7 MySQL 표준 설정
____16.7.1 MySQL 표준 설정의 필요성
____16.7.2 표준 설정의 예시
16.8 복제를 사용하지 않는 MySQL의 설정
16.9 MySQL 복제 구축
____16.9.1 MySQL 복제의 형태
____16.9.2 확장(스케일 아웃)
____16.9.3 가용성
____16.9.4 복제가 구축된 MySQL에서의 작업
16.10 SQL 작성 표준
____16.10.1 조인 조건은 항상 ON 절에 기재
____16.10.2 테이블 별칭(Alias) 사용 및 칼럼 명에 테이블 별칭 포함
____16.10.3 서버 사이드 프리페어 스테이트먼트 사용
____16.10.4 FULL GROUP BY 사용
____16.10.5 DELETE, UPDATE 쿼리에서 ORDER BY LIMIT 사용 자제
____16.10.6 문자열 리터럴 표기는 홑 따옴표만 사용
____16.10.7 서브쿼리는 조인으로 변경
____16.10.8 UNION [ALL]은 사용 자제
____16.10.9 스토어드 함수는 가능하면 DETERMINISTIC으로 정의
____16.10.10 스토어드 프로그램에서는 예외 처리 코드를 작성
____16.10.11 UPDATE, DELETE 쿼리와 적용 건수(Affected row counts) 체크
____16.10.12 숫자 값은 반드시 숫자 타입의 칼럼으로 정의
16.11 하드웨어와 플랫폼 선정
____16.11.1 하드웨어 선정
____16.11.2 운영체제의 파일 시스템 선정
16.12 백업 및 모니터링
____16.12.1 백업(EnterpriseBackup과 mysqldump)
16.13 스키마 검토
▣ 17장_응급 처치
17.1 서버 과부하
____17.1.1 운영체제의 유틸리티를 이용해 장비의 부하 확인
____17.1.2 MySQL 서버의 에러 로그 확인
____17.1.3 MySQL 서버의 프로세스 리스트 확인..... 981
____17.1.4 MySQL 서버의 최대 커넥션 설정 확인... 982
____17.1.5 MySQL 서버의 슬로우 쿼리 분석
____17.1.6 쿼리의 실행 빈도 확인
____17.1.7 각 원인별 조치
17.2 MySQL 서버 셧다운
17.3 MySQL 복구(데이터 파일 손상)
____17.3.1 MyISAM
____17.3.2 InnoDB
17.4 테이블 메타 정보의 불일치
17.5 복제가 멈추었을 때
17.6 경고 메시지로 에러 로그 파일이 커질 때
17.7 바이너리 로그로 디스크가 꽉 찬 경우
17.8 마스터 MySQL 서버에서 함수 생성 오류
17.9 MySQL의 DB명 변경
17.10 DB의 테이블 생성 DDL만 덤프
17.11 mysqldump의 결과를 다른 이름의 DB로 적재
17.12 테이블이나 레코드의 잠금 해결
17.13 InnoDB의 잠금 대기 시간 초과
17.14 MySQL 서버의 호스트 잠금
▣ 부록_A MySQL 5.1(InnoDB Plugin 1.0) 새로운 기능
A.1 MySQL 5.1의 신기능
____A.1.1 파티션
____A.1.2 레코드 기반의복제(Row-based replication)
____A.1.3 플러그인 API
____A.1.4 이벤트 스케줄러
____A.1.5 서버 로그 테이블
A.2 InnoDB 플러그인 1.0의 신기능
____A.2.1 InnoDB의 빠른 인덱스 생성
____A.2.2 InnoDB 데이터 압축
____A.2.3 BLOB이나 TEXT 타입 관리
____A.2.4 InnoDB 파일 포맷 관리
____A.2.5 InnoDB INFORMATION_SCHEMA 테이블
____A.2.6 확장성 개선을 위한 빠른 잠금 처리
____A.2.7 운영체제의 메모리 할당 기능 사용
____A.2.8 InnoDB 인서트 버퍼 제어
____A.2.9 Adaptive Hash Index 제어
____A.2.10 Read Ahead 알고리즘의 개선
____A.2.11 다중 백그라운드 I/O 스레드
____A.2.12 그룹 커밋
____A.2.13 마스터 스레드의 I/O 성능 제어
____A.2.14 더티 페이지의 플러시 제어
____A.2.15 Spin loop에서 PAUSE 사용
____A.2.16 버퍼 풀의 관리 기능 개선
____A.2.17 여러 시스템 설정의 동적인 제어
____A.2.18 TRUNCATE TABLE 시에 테이블 스페이스 공간 반납
____A.2.19 InnoDB의 통계 수집을 위한 페이지 샘플링 수 조절
▣ 부록_B MySQL 5.5 (InnoDB Plugin 1.1) 신기능
B.1 MySQL 서버의 개선 사항
____B.1.1 스레드 풀
____B.1.2 사용자 인증 플러그인 아키텍처
____B.1.3 반동기 복제(Semi-synchronous Replication)
____B.1.4 유니코드 지원 확장
____B.1.5 기본 스토리지 엔진의 변경
____B.1.6 SIGNAL과 RESIGNAL 기능 추가
____B.1.7 파티션 기능 개선
B.2 InnoDB 플러그인 1.1의 개선 사항
____B.2.1 인덱스 생성 방식 변경
____B.2.2 트랜잭션 복구 성능 향상
____B.2.3 InnoDB 성능 진단을 위한 PERFORMANCE_SCHEMA
____B.2.4 다중 버퍼 풀
____B.2.5 다중 롤백 세그먼트
____B.2.6 버퍼 풀 관련 뮤텍스 개선
____B.2.7 인서트 버퍼 처리 개선
____B.2.8 비동기화된 디스크 I/O
▣ 부록_C MySQL 5.6 신기능
C.1 InnoDB 테이블을 위한 풀 텍스트 검색
C.2 InnoDB의 리두 로그 파일 크기
C.3 언두 테이블 스페이스
C.4 InnoDB 버퍼 풀의 자동 워밍 업
C.5 InnoDB의 페이지 크기 조정
C.6 멀티 스레드 슬레이브
C.7 Memcached를 통한 NoSQL 확장
책 속으로
2010년에 접어들면서 수많은 NoSQL 도구가 대용량 데이터 저장에 최적인 것처럼 온라인 사이트들을 장식했다. 예전에 오라클 데이터베이스가 그래 왔던 것처럼 말이다. 많은 사람들이 유행을 좇아 NoSQL을 공부하고 있지만, 안타깝게도 우리가 익숙하게 사용하고 있는 SNS(Social Networking Service)나 SNG(Social Networking Game) 서비스에서 대용량의 핵심 데이터가 최적화된 MySQL 데이터베이스에서 관리된다는 사실을 알고 있는 사람은 많지 않다.
오라클이나 MSSQL과 같은 상용 데이터베이스와 비교해도 MySQL 서버의 성능이나 효율성은 전혀 손색이 없다. 예전에는 서비스의 가입자 수나 사용자의 수에 비례해 데이터의 양이 늘어났지만, 최근에는 소셜 네트워크 관련 기능이 많이 구현되면서 가입자나 사용자의 몇십 배에서 몇백 배 수준으로 데이터의 양이 늘어나는 경향이 있다. 이처럼 기하급수적으로 늘어나는 데이터를 값비싼 기업용 대형 장비와 소프트웨어를 사용해 관리하기란 거의 불가능한 일이다. 10원을 벌기 위해 100원을 투자할 회사는 없으니 말이다. MySQL 서버는 비용에 대한 부담이 없으며, 다른 상용 데이터베이스 서버와 동등하거나 더 우월한 성능을 제공하므로 최근의 소셜 네트워크 관련 업무 여건에 너무도 잘 들어맞는다.
이 책이 독자들에게 MySQL의 모든 것을 전달하지는 못할 수도 있다. 하지만 개발자로서, 또는 데이터베이스 관리자로서 MySQL을 사용하기 위해 알고 있어야 할 MySQL 서버의 사용법이나 주의사항에 대해 전반적인 지식과 경험을 전해줄 것이라고 믿는다. 또한 독자 한 사람 한 사람의 생각과 경험이 달라서, 글로 저자의 의도를 100% 전달한다는 것은 어려움이 있을 것으로 생각한다. 그래서 이 책을 위한 카페(http://cafe.naver.com/realmysql)를 별도로 개설했으며, 책에서 설명하는 내용 가운데 이해하기 어렵거나 책에 언급된 내용이 아니더라도 MySQL을 사용하면서 느끼는 어려움이 있다면 카페를 통해 도움을 드리겠다.
- 저자 서문 중에서
출판사 서평
Real MySQL, MySQL의 새로운 발견!
더 이상 MySQL은 커뮤니티나 소셜 네트워크 서비스와 떼어놓을 수 없는 관계에 있다는 것은 누구나 잘 알고 있을 것이다. 하지만 MySQL은 여기서 그치지 않고 빌링이나 결제와 같은 금전적인 처리용으로도 많이 사용되고 있는데, 이는 MySQL의 트랜잭션 처리나 안정성이 오라클과 비교해서 전혀 뒤처지지 않음을 의미한다고 볼 수 있다. 사실 MySQL(InnoDB)의 내부 처리 방식은 오라클의 그것과 거의 다르지 않기 때문에 이는 당연한 결과라고 볼 수 있다.
이 책은 지금까지의 매뉴얼 번역이나 단편적인 지식 수준을 벗어나 저자와 다른 많은 MySQL 전문가의 경험과 노력의 결과를 여러분에게 전해줄 것이다. 또한 이 책에서는 많은 그림과 벤치마크 결과를 함께 수록해 MySQL을 처음 접하는 사용자도 쉽게 이해할 수 있게 구성했다. 이 책을 계기로 지금까지 지니고 있었던 MySQL에 대한 선입견 대신 MySQL의 새로운 면모를 익히고 경험하게 되리라 확신한다.
만약 MySQL을 공부하고 있거나 MySQL을 이용한 서비스 개발이나 운영을 해야 한다면 지금 당장 이 책을 살펴보길 권장한다. 지금까지 알고 있는 것들을 넘어서서 새로운 MySQL을 경험하게 될 것이다.
<출판사 리뷰>
Real MySQL은 기본적인 SQL 문법 소개나 매뉴얼의 번역 수준을 벗어나서 MySQL을 이용하는 애플리케이션 개발이나 운영을 통해 얻은 경험과 지식, 그리고 반드시 알고 있어야 할 주의사항 위주로 내용을 구성했다. 이 책을 처음부터 끝까지 다 읽는다면 더없이 좋겠지만, 필요하거나 관심 있는 내용 위주로 살펴봐도 지금까지 가지고 있었던 많은 고민거리를 해결할 수 있을 것이다.
★ 이 책에서 다루는 내용 ★
· MySQL 서버의 아키텍처와 MySQL 설치
· 인덱스의 종류와 구조 및 활용
· 쿼리의 실행 계획 분석 및 최적화
· MySQL 서버와 연동하는 프로그램 개발
· 스토어드 프로그램 개발 및 사용자 변수 활용
· 데이터 모델링 및 최적의 데이터 타입 선정
· 개발을 위한 베스트 프랙티스
· MySQL 서버 응급처치
기본정보
ISBN | 9788992939003 | ||
---|---|---|---|
발행(출시)일자 | 2012년 05월 08일 | ||
쪽수 | 1040쪽 | ||
크기 |
240 * 188
* 60
mm
/ 1934 g
|
||
총권수 | 1권 | ||
시리즈명 |
위키북스 오픈소스 웹 시리즈
|
Klover
e교환권은 적립 일로부터 180일 동안 사용 가능합니다.
리워드는 작성 후 다음 날 제공되며, 발송 전 작성 시 발송 완료 후 익일 제공됩니다.
리워드는 리뷰 종류별로 구매한 아이디당 한 상품에 최초 1회 작성 건들에 대해서만 제공됩니다.
판매가 1,000원 미만 도서의 경우 리워드 지급 대상에서 제외됩니다.
일부 타인의 권리를 침해하거나 불편을 끼치는 것을 방지하기 위해 아래에 해당하는 Klover 리뷰는 별도의 통보 없이 삭제될 수 있습니다.
- 도서나 타인에 대해 근거 없이 비방을 하거나 타인의 명예를 훼손할 수 있는 리뷰
- 도서와 무관한 내용의 리뷰
- 인신공격이나 욕설, 비속어, 혐오발언이 개재된 리뷰
- 의성어나 의태어 등 내용의 의미가 없는 리뷰
리뷰는 1인이 중복으로 작성하실 수는 있지만, 평점계산은 가장 최근에 남긴 1건의 리뷰만 반영됩니다.
구매 후 리뷰 작성 시, e교환권 200원 적립
문장수집
e교환권은 적립 일로부터 180일 동안 사용 가능합니다. 리워드는 작성 후 다음 날 제공되며, 발송 전 작성 시 발송 완료 후 익일 제공됩니다.
리워드는 한 상품에 최초 1회만 제공됩니다.
주문취소/반품/절판/품절 시 리워드 대상에서 제외됩니다.
구매 후 리뷰 작성 시, e교환권 100원 적립