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

인기 검색어

실시간 검색어

검색가능 서점

도서목록 제공

Real MariaDB

Real MariaDB

(MariaDB 10.0과 MySQL 5.6을 함께 배우는)

이성욱 (지은이)
위키북스
35,000원

일반도서

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

중고도서

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

eBook

검색중
서점 정가 할인가 마일리지 실질최저가 구매하기
aladin 25,000원 -10% 1250원 21,250원 >

책 이미지

Real MariaDB
eBook 미리보기

책 정보

· 제목 : Real MariaDB (MariaDB 10.0과 MySQL 5.6을 함께 배우는)
· 분류 : 국내도서 > 컴퓨터/모바일 > 프로그래밍 개발/방법론 > 데이터베이스 프로그래밍 > 데이터베이스 구축
· ISBN : 9788998139537
· 쪽수 : 628쪽
· 출판일 : 2014-04-18

책 소개

위키북스 오픈소스 & 웹 시리즈 58권. MariaDB와 MySQL에 관심을 가지고 있는 독자들을 위해서, MariaDB 10.0과 MySQL 5.6의 각 고유 기능과 공통 기능들을 비교 설명하는 방식으로 구성되었다.

목차

▣ 01장: MariaDB
_1.1 MariaDB란?
_1.2 MariaDB vs. MySQL
__1.2.1 MariaDB와 MySQL 그리고 PerconaServer
__1.2.2 공통점
__1.2.3 차이점
___1.2.3.1 라이선스
___1.2.3.2 스토리지 엔진
___1.2.3.3 기능
___1.2.3.4 옵티마이저
__1.2.4 버전별 호환성
__1.2.5 성능 비교
__1.2.6 MariaDB가 MySQL을 대체하게 될까?
__1.2.7 MariaDB와 MySQL 선택
▣ 02장: 설치
_2.1 다운로드
_2.2 설치
__2.2.1 윈도우 버전 설치
___2.2.1.1 설치 프로그램(MSI)을 이용한 설치
___2.2.1.2 압축(ZIP)된 MariaDB 설치
__2.2.2 리눅스 버전 설치
___2.2.2.1 RPM을 이용한 설치
___2.2.2.2 압축(tar.gz)된 MariaDB 설치
_2.3 업그레이드
__2.3.1 MySQL에서 MariaDB로 업그레이드할 때 주의 사항
__2.3.2 버전에 관계없이 가장 안전한 방법
__2.3.3 MySQL 5.0이나 그 이전 버전에서 MariaDB 5.5로 업그레이드
__2.3.4 MySQL 5.1에서 MariaDB 5.5로 업그레이드
__2.3.5 MySQL 5.5에서 MariaDB 5.5로 업그레이드
▣ 03장: MariaDB 기동 및 쿼리 실행
_3.1 서버 시작 및 종료
__3.1.1 리눅스에서 MariaDB 서버의 시작과 종료
___3.1.1.1 서비스로 등록된 경우
___3.1.1.2 서비스로 등록되지 않은 경우
__3.1.2 윈도우에서 MariaDB 서버의 시작과 종료
___3.1.2.1 서비스로 등록된 경우
___3.1.2.2 서비스로 등록되지 않은 경우
_3.2 서버 로그인
__3.2.1 서버 로그인 및 버전 확인
__3.2.2 mysql 클라이언트 프로그램 옵션
___3.2.2.1 안전 모드로 mysql 클라이언트 실행
___3.2.2.2 --execute 옵션으로 mysql 클라이언트 실행
___3.2.2.3 --batch 모드와 함께 --execute 옵션으로 mysql 클라이언트 실행
___3.2.2.4 --batch 모드로 --skip-column-names와 함께 --execute 옵션으로 mysql 클라이언트 실행
_3.3 데이터베이스 및 사용자 생성
__3.3.1 MariaDB의 사용자 계정 인식과 권한
___3.3.1.1 사용자의 식별
___3.3.1.2 권한
___3.3.1.3 권한의 부여
___3.3.1.4 권한 그룹
__3.3.2 MariaDB의 기본 사용자
__3.3.3 MariaDB의 기본 데이터베이스
__3.3.4 새로운 데이터베이스 생성
__3.3.5 사용자 생성
___3.3.5.1 사용자 생성 및 권한 부여
___3.3.5.2 관리자 계정 준비
_3.4 테이블 생성 및 변경
__3.4.1 테이블 생성
__3.4.2 테이블 변경(온라인 및 오프라인)
___3.4.2.1 오프라인 스키마 변경
___3.4.2.2 MariaDB의 온라인 스키마 변경
___3.4.2.3 MySQL의 온라인 스키마 변경
___3.4.2.4 pt-online-schema-change
___3.4.2.5 온라인 스키마 변경을 사용해도 될까?
__3.4.3 테이블 삭제
_3.5 데이터 조작
__3.5.1 INSERT
__3.5.2 SELECT
__3.5.3 UPDATE
__3.5.4 REPLACE
__3.5.5 DELETE
▣ 04장: 실행 계획 분석
_4.1 개요
__4.1.1 쿼리 실행 절차
__4.1.2 옵티마이저의 종류
__4.1.3 통계 정보
___4.1.3.1 MySQL 5.6의 통계 정보
___4.1.3.2 MariaDB 10.0의 통계 정보
__4.1.4 히스토그램 통계 정보
___4.1.4.1 히스토그램이란?
___4.1.4.2 MariaDB에서 히스토그램 사용
__4.1.5 조인 옵티마이저 옵션
_4.2 예제 데이터 준비
__4.2.1 예제 데이터 적재
__4.2.2 통계 정보 수집
_4.3 실행 계획 분석
__4.3.1 id 칼럼
__4.3.2 select_type 칼럼
___4.3.2.1 SIMPLE
___4.3.2.2 PRIMARY
___4.3.2.3 UNION
___4.3.2.4 DEPENDENT UNION
___4.3.2.5 UNION RESULT
___4.3.2.6 SUBQUERY
___4.3.2.7 DEPENDENT SUBQUERY
___4.3.2.8 DERIVED
___4.3.2.9 UNCACHEABLE SUBQUERY
___4.3.2.10 UNCACHEABLE UNION
___4.3.2.11 MATERIALIZED
___4.3.2.12 INSERT
__4.3.3 table 칼럼
__4.3.4 type 칼럼
___4.3.4.1 system
___4.3.4.2 const
___4.3.4.3 eq_ref
___4.3.4.4 ref
___4.3.4.5 fulltext
___4.3.4.6 ref_or_null
___4.3.4.7 unique_subquery
___4.3.4.8 index_subquery
___4.3.4.9 range
___4.3.4.10 index_merge
___4.3.4.11 index
___4.3.4.12 ALL
__4.3.5 possible_keys 칼럼
__4.3.6 key 칼럼
__4.3.7 key_len 칼럼
__4.3.8 ref 칼럼
__4.3.9 rows 칼럼
__4.3.10 Extra 칼럼
___4.3.10.1 const row not found
___4.3.10.2 Distinct
___4.3.10.3 Full scan on NULL key
___4.3.10.4 Impossible HAVING
___4.3.10.6 Impossible WHERE noticed after reading const tables
___4.3.10.7 No matching min/max row
___4.3.10.8 no matching row in const table
___4.3.10.9 No tables used
___4.3.10.10 Not exists
___4.3.10.11 Range checked for each record(index map: N)
___4.3.10.12 Scanned N databases
___4.3.10.13 Select tables optimized away
___4.3.10.14 Skip_open_table, Open_frm_only, Open_trigger_only, Open_full_table
___4.3.10.15 unique row not found
___4.3.10.16 Using filesort
___4.3.10.17 Using index(커버링 인덱스)
___4.3.10.18 Using index for group-by
___4.3.10.19 Using join buffer(Block Nested Loop), Using join buffer(Batched Key Access)
___4.3.10.20 Using sort_union, Using union, Using intersect, Using sort_intersection
___4.3.10.21 Using temporary
___4.3.10.22 Using where
___4.3.10.23 Using where with pushed condition
___4.3.10.24 Deleting all rows
___4.3.10.25 FirstMatch(tbl_name)
___4.3.10.26 LooseScan(m n)
___4.3.10.27 Materialize, Scan
___4.3.10.28 Start materialize, End materialize, Scan
___4.3.10.29 Start temporary, End temporary
___4.3.10.30 Using index condition
___4.3.10.31 Rowid-ordered scan, Key-ordered scan
___4.3.10.32 No matching rows after partition pruning
__4.3.11 EXPLAIN EXTENDED(Filtered 칼럼)
__4.3.12 EXPLAIN EXTENDED(추가 옵티마이저 정보)
__4.3.13 EXPLAIN PARTITIONS(Partitions 칼럼)
_4.4 옵티마이저 힌트
__4.4.1 힌트의 사용법
__4.4.2 STRAIGHT_JOIN
__4.4.3 USE INDEX / FORCE INDEX / IGNORE INDEX
__4.4.4 SQL_CACHE / SQL_NO_CACHE
__4.4.5 SQL_CALC_FOUND_ROWS
__4.4.6 기타 힌트
_4.5 실행 계획 분석 시 주의사항
__4.5.1 Select_type 칼럼의 주의 대상
__4.5.2 Type 칼럼의 주의 대상
__4.5.3 Key 칼럼의 주의 대상
__4.5.4 Rows 칼럼의 주의 대상
__4.5.5 Extra 칼럼의 주의 대상
___4.5.5.1 쿼리가 요건을 제대로 반영하고 있는지 확인해야 하는 경우
___4.5.5.2 쿼리의 실행 계획이 좋지 않은 경우
___4.5.5.3 쿼리의 실행 계획이 좋은 경우

▣ 05장: 최적화
_5.1 풀 테이블 스캔
_5.2 ORDER BY 처리(Using filesort)
__5.2.1 소트 버퍼(Sort buffer)
__5.2.2 정렬 알고리즘
__5.2.3 정렬의 처리 방식
___5.2.3.1 인덱스를 사용한 정렬
___5.2.3.2 드라이빙 테이블만 정렬
___5.2.3.3 임시 테이블을 이용한 정렬
___5.2.3.4 정렬 방식의 성능 비교
__5.2.4 ORDER BY....LIMIT n 최적화
__5.2.5 정렬 관련 상태 변수
_5.3 GROUP BY 처리
__5.3.1 인덱스 스캔을 이용하는 GROUP BY(타이트 인덱스 스캔)
__5.3.2 루스(loose) 인덱스 스캔을 이용하는 GROUP BY
__5.3.3 임시 테이블을 사용하는 GROUP BY
_5.4 DISTINCT 처리
__5.4.1 SELECT DISTINCT
__5.4.2 집함 함수와 함께 사용된 DISTINCT
_5.5 임시 테이블(Using temporary)
__5.5.1 임시 테이블이 필요한 쿼리
__5.5.2 임시 테이블이 디스크에 생성되는 경우(Aria 스토리지 엔진을 사용)
__5.5.3 임시 테이블 관련 상태 변수
__5.5.4 인덱스를 가지는 내부 임시 테이블
__5.5.5 내부 임시 테이블(Internal Temporary Table)의 주의사항
_5.6 인덱스 컨디션 푸시다운(Index Condition Pushdown, ICP)
_5.7 멀티 레인지 리드(Multi Range Read)
__5.7.1 RowId 기준 정렬(Rowid-ordered scan)
__5.7.2 Key 기준 정렬(Key-ordered scan)
__5.7.3 Key와 RowId 모두 정렬(Key-ordered, Rowid-ordered scan)
__5.7.4 멀티 레인지 리드 최적화와 정렬
__5.7.5 멀티 레인지 리드 최적화 주의 사항
_5.8 인덱스 머지(Index merge)
__5.8.1 Using union
__5.8.2 Using sort_union
__5.8.3 Using intersect
__5.8.4 Using sort_intersect
_5.9 테이블 조인
__5.9.1 조인의 종류
___5.9.1.1 JOIN (INNER JOIN)
___5.9.1.2 OUTER JOIN
___5.9.1.3 카테시안 조인
___5.9.1.4 NATURAL JOIN
__5.9.2 조인 알고리즘
___5.9.2.1 조인 캐시 레벨(join_cache_level)
___5.9.2.2 조인 버퍼 설정
___5.9.2.3 단순 네스티드 루프(Simple Nested Loop, NL)
___5.9.2.4 블록 네스티드 루프(Block Nested Loop, BNL)
___5.9.2.5 블록 네스티드 루프 해시(Block Nested Loop Hash, BNLH)
___5.9.2.6 블록 인덱스 조인(Block Index Join, Batched Key Access, BKA)
___5.9.2.7 블록 인덱스 해시 조인(Block Index Hash Join, Batched Key Access Hash)
__5.9.3 조인의 주의사항
___5.9.3.1 조인 실행 결과의 정렬 순서
___5.9.3.2 INNER JOIN과 OUTER JOIN의 선택
_5.10 서브 쿼리
__5.10.1 세미 조인 서브쿼리 최적화
___5.10.1.1 Table pullout 최적화
___5.10.1.2 FirstMatch 최적화
___5.10.1.3 Semi-join Materialization 최적화
___5.10.1.4 LooseScan 최적화
___5.10.1.5 Duplicate Weedout 최적화
__5.10.2 세미 조인이 아닌 서브쿼리 최적화
___5.10.2.1 Materialization
___5.10.2.2 IN-to-EXISTS
__5.10.3 서브 쿼리 캐시

▣ 06장: 스토리지 엔진
_6.1 Aria 스토리지 엔진
__6.1.1 트랜잭션
__6.1.2 페이지 캐시
__6.1.3 시스템 설정 변수
_6.2 XtraDB 스토리지 엔진
__6.2.1 InnoDB와 XtraDB 스토리지 엔진 교체
_6.3 InnoDB 스토리지 엔진
__6.3.1 MySQL 5.6 InnoDB
___6.3.1.1 영구적인 통계 정보
___6.3.1.2 데이터 읽기 최적화
___6.3.1.3 커널 뮤텍스(Kernel mutex)
___6.3.1.4 멀티 스레드 기반의 언두 퍼지(Multi threaded purge)
___6.3.1.5 독립된 플러시 스레드
___6.3.1.6 가변 페이지 사이즈
___6.3.1.7 테이블 스페이스 복사(Transportable tablespace)
___6.3.1.8 독립된 언두 스페이스
___6.3.1.9 읽기 전용 트랜잭션(Read-only transaction) 최적화
___6.3.1.10 버퍼 풀 덤프 & 로드
___6.3.1.11 리두 로그 사이즈
___6.3.1.12 리두 로그 크기 변경
___6.3.1.13 데드락 이력
__6.3.2 더티 페이지 플러시
___6.3.2.1 플러시 리스트 플러시
___6.3.2.2 LRU 리스트 플러시
___6.3.2.3 InnoDB와 XtraDB의 더티 플러시
___6.3.2.4 MySQL 5.5 InnoDB의 더티 플러시
___6.3.2.5 MariaDB 5.5 XtraDB의 더티 플러시
___6.3.2.6 MySQL 5.6 InnoDB의 더티 플러시
___6.3.2.7 MariaDB 10.0의 XtraDB
__6.3.3 버퍼 풀 성능 개선
___6.3.3.1 NUMA
___6.3.3.2 버퍼 풀 메모리 초기 할당
___6.3.3.3 InnoDB 잠금 세분화
___6.3.3.4 I/O 기반의 워크로드 성능 향상
___6.3.3.5 어댑티브 해시 파티션
__6.3.4 원자 단위의 쓰기(FusionIO SSD를 위한 Atomic write)
__6.3.5 확장된 InnoDB 엔진 상태 출력
___6.3.5.1 백그라운드 스레드 관련 상태 변수
___6.3.5.2 세마포어 관련 상태 변수
___6.3.5.3 인서트 버퍼와 어댑티브 해시 인덱스 관련 상태 변수
___6.3.5.4 로그 관련 상태 변수
___6.3.5.5 버퍼 풀 관련 상태 변수
___6.3.5.6 트랜잭션 관련 상태 변수
__6.3.6 XtraDB 리두 로그 아카이빙
__6.3.7 변경된 페이지 트랙킹
_6.4 전문 검색 엔진
__6.4.1 전문 검색 인덱스 추가
__6.4.2 전문 검색 인덱스를 위한 테이블 스페이스
__6.4.3 전문 검색 인덱스 관련 INFORMATION_SCHEMA 정보
___6.4.3.1 InnoDB의 모든 전문 검색 인덱스에 적용되는 내용
___6.4.3.2 전문 검색 인덱스를 가진 테이블 단위로 적용되는 내용
__6.4.4 전문 검색 인덱스 사용
__6.4.5 주의 사항
_6.5 Memcached 플러그인
__6.5.1 아키텍처
__6.5.2 설치 및 테스트
__6.5.3 캐시 정책
__6.5.4 사용자 테이블 등록
__6.5.5 관련 시스템 변수
_6.6 카산드라 스토리지 엔진
__6.6.1 카산드라
__6.6.2 카산드라 스토리지 엔진
_6.7 CONNECT 스토리지 엔진
__6.7.1 CONNECT 스토리지 엔진 설치
__6.7.2 오라클 RDBMS 테이블 연결
__6.7.3 my.cnf 설정 파일 연결
__6.7.4 운영체제의 디렉터리 연결
_6.8 시퀀스 스토리지 엔진
__6.8.1 시퀀스 스토리지 엔진 기본 사용법
__6.8.2 누락된 번호 찾기
__6.8.3 순차적으로 조합된 번호 쌍 생성
__6.8.4 배수 또는 공배수 찾기
__6.8.5 순차적인 알파벳 생성
__6.8.6 순차적인 날짜 생성
__6.8.7 데이터 복제 가공
_6.9 Mroonga 전문 검색 스토리지 엔진
__6.9.1 인덱스 알고리즘
___6.9.1.1 구분자(Stopword) 방식
___6.9.1.2 n-Gram 방식
___6.9.1.3 구분자와 n-Gram의 차이
__6.9.2 Mroonga 전문 검색 엔진 설치
__6.9.3 Mroonga 전문 검색 엔진 사용

▣ 07장: 기타 기능
_7.1 성능 향상
__7.1.1 스레드 풀(Thread Pool)
___7.1.1.1 MySQL 서버의 전통적인 연결 및 처리 방식
___7.1.1.2 MariaDB의 스레드 풀
___7.1.1.3 MariaDB 스레드 풀의 사용과 튜닝
___7.1.1.4 주의 사항
_7.2 관리 및 진단
__7.2.1 SHOW EXPLAIN FOR
__7.2.2 슬로우 쿼리 로그에 실행 계획 출력
__7.2.3 구조화된 실행 계획 출력
__7.2.4 스레드 단위의 메모리 사용량
__7.2.5 SHUTDOWN 명령
__7.2.6 사용자나 쿼리 실행 강제 종료(KILL)
__7.2.7 GET DIAGNOSTICS
_7.3 개발 생산성
__7.3.1 LIMIT ROWS EXAMINED
__7.3.2 DELETE...RETURNING
__7.3.3 마이크로 초 단위의 시간 저장
__7.3.4 DATETIME 타입의 기본값 설정
__7.3.5 정규 표현식 기능 확장
__7.3.6 가상(Virtual) 칼럼
__7.3.7 동적(Dynamic) 칼럼
_7.4 파티션
__7.4.1 명시적 파티션 지정
___7.4.1.1 명시적 파티션 지정 사용법
___7.4.1.2 명시적 파티션 지정 기능의 용도
__7.4.2 파티션 테이블 스페이스 교체(Exchange)
_7.5 백업
__7.5.1 바이너리 로그 원격 백업
__7.5.2 XtraBackup 소개
___7.5.2.1 XtraBackup 패키지 구성
___7.5.2.2 XtraBackup의 원리
___7.5.2.3 XtraBackup의 기본 사용법
__7.5.3 XtraBackup의 기능
___7.5.3.1 스트리밍 백업
___7.5.3.2 압축
___7.5.3.3 암호화
___7.5.3.4 슬레이브 백업
___7.5.3.5 병렬(Parallel) 백업
___7.5.3.6 백업 속도 조절
___7.5.3.7 개별 테이블 복구
___7.5.3.8 FLUSH TABLES WITH READ LOCK 개선
__7.5.4 XtraBackup의 고급 사용법
___7.5.4.1 PIT(Point In Time) 복구
___7.5.4.2 증분(Incremental) 백업
___7.5.4.3 부분(Partial) 백업
___7.5.4.4 컴팩트(Compact) 백업
___7.5.4.5 스트리밍(Streaming) 백업
___7.5.4.6 암호화(Encrypt) 백업
▣ 08장: 레플리케이션
_8.1 글로벌 트랜잭션 아이디(Global Transaction ID)
__8.1.1 글로벌 트랜잭션 아이디(GTID)란?
__8.1.2 글로벌 트랜잭션 아이디의 필요성
__8.1.3 MariaDB 10.0 글로벌 트랜잭션 아이디
___8.1.3.1 GTID를 이용한 복제 구축
___8.1.3.2 GTID를 사용한 복제 관리
___8.1.3.3 GTID를 이용한 슬레이브에서 트랜잭션 건너뛰기
__8.1.4 MySQL 5.6 글로벌 트랜잭션 아이디
___8.1.4.1 GTID를 이용한 복제 구축
___8.1.4.2 GTID 관련 함수
___8.1.4.3 GTID 이벤트 건너뛰기
_8.2 멀티 소스 복제(Multi-source replication)
__8.2.1 멀티 소스 복제 관련 명령
__8.2.2 멀티 소스 복제 구축
__8.2.3 멀티 소스 복제와 글로벌 트랜잭션
_8.3 멀티 스레드 복제
__8.3.1 MySQL 5.6의 멀티 스레드 복제
__8.3.2 MariaDB 10.0의 멀티 스레드 복제
_8.4 크래시 세이프(Crash safe) 슬레이브
__8.4.1 MariaDB 10.0의 크래시 세이프 복제
__8.4.2 MySQL 5.6의 크래시 세이프 복제
_8.5 ROW 기반의 복제 기능 개선
__8.5.1 ROW 포맷의 용량 최적화
__8.5.2 ROW 포맷 바이너리 로그를 위한 정보성 로그 이벤트
___8.5.2.1 MariaDB 주석 이벤트
___8.5.2.2 MySQL 5.6의 정보성 로그 이벤트
_8.6 지연된 복제
_8.7 MariaDB와 MySQL 서버간의 복제
_8.8 그 외의 기타 기능 개선
__8.8.1 바이너리 로그 체크섬
__8.8.2 바이너리 로그 API
__8.8.3 바이너리 로그 그룹 커밋

저자소개

이성욱 (지은이)    정보 더보기
컴퓨터 과학을 전공하고 네이버와 라인을 거쳐 카카오 및 밸런스히어로에서 DBA로 근무했으며, 현재 당근마켓 DB팀 리더로 근무하고 있다. 저서 - PHP5 웹 프로그래밍 - MySQL 성능 최적화 - Real MySQL 번역서 - MySQL 성능 최적화(2010. 위키북스)
펼치기
이 포스팅은 쿠팡 파트너스 활동의 일환으로,
이에 따른 일정액의 수수료를 제공받습니다.
이 포스팅은 제휴마케팅이 포함된 광고로 커미션을 지급 받습니다.
도서 DB 제공 : 알라딘 서점(www.aladin.co.kr)
최근 본 책
9791158393854