"마리아DB(MariaDB) & MySQL 기초 및 SQL 활용 재직자 향상과정 “은
단기간에 MariaDB에 대한 설치 및 설정 부터 기초 쿼리 활용 능력, 서브쿼리, 조인, 쿼리최적화방법, 스토리지 엔진, SQL 실행계획의 분석까지 배울 수 있는 실무/실습위주의 교육 입니다.
[국비지원추천]마리아db(maria db) & mysql 기초 및 sql 활용 재직자 향상과정_직장인환급과정/내일배움카드/마리아DB학원/SQL활용/SQL학원/IT학원추천
1.
2. 교육개요
"마리아DB(MariaDB) & MySQL 기초 및 SQL 활용 재직자 향상과정 “은
단기간에 MariaDB에 대한 설치 및 설정 부터 기초 쿼리 활용 능력, 서브쿼리, 조인, 쿼리최적화방법,
스토리지 엔진, SQL 실행계획의 분석까지 배울 수 있는 실무/실습위주의 교육 입니다.
3. 교육과정 안내
마리아DB(MariaDB) & MySQL 기초 및 SQL 활용 재직자 향상과정
교육목표
단기간에 MariaDB에 대한 설치 및 설정 부터 기초 쿼리 활
용 능력, 서브쿼리, 조인, 쿼리최적화방법, 스토리지 엔진,
SQL 실행계획의 분석
교육대상 초보 및 신입 개발자, SQL에 관심있는 개발자 또는 학생
선수학습 데이터베이스 기초지식
강의시간 32 시간
수강료 380,000원
정부지원금 210,368원 (본인부담금 : 169,632원)
평일야간반 신청평일주간반 신청 주말주간반 신청
4. 세부 교육내용
마리아DB(Maria
DB) & MySQL
▣ 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 선택
5. 세부 교육내용
마리아DB(Maria
DB) & 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로 업그레이드
6. 세부 교육내용
마리아DB(Maria
DB) & MySQL
▣ 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 클라이언트 실행
7. 세부 교육내용
마리아DB(Maria
DB) & 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 관리자 계정 준비
8. 세부 교육내용
마리아DB(Maria
DB) & MySQL
_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
9. 세부 교육내용
마리아DB(Maria
DB) & MySQL
▣ 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 실행 계획 분석
10. 세부 교육내용
마리아DB(Maria
DB) & MySQL
_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
11. 세부 교육내용
마리아DB(Maria
DB) & MySQL
_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
12. 세부 교육내용
마리아DB(Maria
DB) & MySQL
__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)
13. 세부 교육내용
마리아DB(Maria
DB) & MySQL
___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)
14. 세부 교육내용
마리아DB(Maria
DB) & MySQL
__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 기타 힌트
15. 세부 교육내용
마리아DB(Maria
DB) & MySQL
_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 쿼리의 실행 계획이 좋은 경우
16. 세부 교육내용
마리아DB(Maria
DB) & MySQL
_▣ 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
17. 세부 교육내용
마리아DB(Maria
DB) & MySQL
__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 멀티 레인지 리드 최적화 주의 사항
18. 세부 교육내용
마리아DB(Maria
DB) & MySQL
_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 조인 버퍼 설정
19. 세부 교육내용
마리아DB(Maria
DB) & MySQL
___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 최적화
20. 세부 교육내용
마리아DB(Maria
DB) & MySQL
___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 스토리지 엔진 교체
21. 세부 교육내용
마리아DB(Maria
DB) & MySQL
_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 데드락 이력
22. 세부 교육내용
마리아DB(Maria
DB) & MySQL
__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 어댑티브 해시 파티션
23. 세부 교육내용
마리아DB(Maria
DB) & MySQL
_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 전문 검색 인덱스를 가진 테이블 단위로 적용되는 내
용
24. 세부 교육내용
마리아DB(Maria
DB) & MySQL
__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 운영체제의 디렉터리 연결
25. 세부 교육내용
마리아DB(Maria
DB) & MySQL
_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 전문 검색 엔진 사용
26. 세부 교육내용
마리아DB(Maria
DB) & MySQL
▣ 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 [THREAD-ID