IT전문교육 의 리더!

로그인 회원가입
HOME>IT전문가>데이터베이스>MariaDB

MariaDB

20회차 속성과정
전체 : 19시간 46분|회차당 평균 : 59분17초

이용기간 2개월

전문강사 : 현준영

370,000225,000



MariaDB 사용법 강좌
MariaDB(마리아DB)는 MySQL이나 오라클과 같은 하나의 독립적인 오픈 소스의 관계형 데이터베이스 관리 시스템(RDBMS)입니다. 알지오 마리아DB 강좌를 통해 기동 및 쿼리 실행, 최적화 방법, 스토리지 엔진 등의 내용을 배우고, 100% 실습을 통한 학습으로 실무에서 바로 활용할 수 있는 스킬을 쌓을 수 있습니다.
  • 01.57분 MariaDB 시작

    설치, 기동 및 쿼리 실행, 서버 시작 및 종료, 서버 로그인, 데이터베이스 및 사용자 생성, 전역권한, 데이터베이스 레벨 권한, 테이블 레벨 권한, 스토어드 프로그램 레벨 권한

    책갈피 : [00:00] 마리아DB란/[00:11] 간단한 설치과정/[01:10] 윈도우 버전, 리눅스 버전/[01:37] 윈도우 버전으로 설치하는 방법(MSI, zip)/[04:08] 마리아DB 실행/[04:22] 리눅스 버전으로 설치하는 방법(RPM, tar.gz)/[05:13] 마리아DB 업그레이드/[07:51] 시작과 종료 방법/[09:06] 설정파일 확인/[09:18] my-small.ini 파일 확인/[09:40] default 파일 설정 및 실행/[10:17] 기동 및 쿼리 실행/[10:42] 마리아DB 서버 로그인/[12:07] my-sql 클라이언트 서버 로그인/[13:34] my-sql 클라이언트 프로그램/[14:02] 연결정보 확인/[14:32] my-sql 클라이언트 프로그램의 장점/[15:04] my-sql 클라이언트 프로그램의 옵션/[15:32] --host/[15:48] --port/[15:58] --user/[16:14] --password/[16:34] --database/[16:50] --execute/[17:04] --auto-rehash/[17:30] --batch/[17:44] --skip-column-names/[18:04] --safe-updates/[18:45] 옵션의 사용 예제1 (execute)/[19:34] 옵션의 사용 예제2 (execute)/[19:55] 옵션의 사용 예제3 (batch, execute)/[20:48] 옵션의 사용 예제4 (batch, skip-column-names)/[21:14] 데이터베이스 및 사용자 생성/[21:58] 사용자 식별/[23:15] 모두 접속 가능한 사용자 계정/[23:33] 주의할 점(중첩되는 계정이 여러개일 경우)/[24:55] 권한/[25:25] 사용자에게 권한 부여/[25:44] on절에 명시하는 오브젝트/[25:53] privilege_list/[27:51] 전역권한/[31:02] 데이터베이스 레벨 권한/[32:25] 테이블 레벨 권한/[33:57] 스토어드 프로그램 레벨 권한/[34:33] GRANT 명령/[35:10] GRANT 옵션 권한의 특징/[35:56] 전역권한 부여 (super)/[36:49] 데이터베이스 권한 부여 (event)/[37:43] 테이블 권한 부여1 (모든 데이터베이스의 오브젝트)/[38:02] 테이블 권한 부여2 (특정 데이터베이스의 오브젝즈)/[38:11] 테이블 권한 부여3 (특정 데이터베이스의 특정 테이블)/[38:20] 테이블 권한 부여4 (특정 컬럼에 대해서만 권한 부여)/[39:35] user, host/[39:45] 권한 그룹/[40;06] create role/[42:12] 특정 사용자에게 권한 부여/[42:38] 실제 사용자에게 권한 부여/[43:01] 아쉬운 점/[43:25] set role/[44:38] 기본 사용자와 기본 데이터베이스/[45:01] my-sql_install_db/[45:36] 기본적으로 제공되는 사용자 계정/[47:38] my-sql_secure_installation/[48:03] my-sql 데이터베이스/[48:35] informatin schema 데이터베이스/[49:23] performance schema 데이터베이스/[50:38] 불필요한 권한 삭제/[50:50] 테이블 살펴보기/[52:27] flush privileges/[53:00] 새로운 데이터베이스와 사용자 생성/[53:25] 데이터베이스 생성과 문자셋 지정/[53:55] 기존 데이터베이스 삭제/[54:17] 새로운 사용자 생성과 권한 부여/[56:24] 관리자 계정/[57:08] flush privileges

  • 02.55분 기동 및 쿼리 실행과 실행 계획 분석

    테이블 생성 및 변경, 오프라인, 온라인 스키마 변경, Lock, Algorithm, Inplace 사용시 작업 절차, 온라인 스키마 변경 작업별 처리 방식, 테이블 삭제, 데이터 조작, 쿼리 실행 절차, 옵티마이저, 통계정보

    책갈피 : [00:00] 데이블 생성 및 변경/[00:45] 테이블 생성/[02:13] my.ini 파일 확인/[02:54] 테이블 내역 확인/[03:40] 오프라인 스키마 변경/[04:07] Alter table/[04:43] 컬럼 추가와 인덱스 생성/[06:35] 여러개의 스키마 변경 문장 처리/[07:15] 간단한 스키마 변경 작업/[07:44] 온라인 스키마 변경/[08:38] 테이블 생성/[09:38] 마리아DB 5.5에서 실패하는 문장/[10:21] 마리아DB 10.0/[11:01] InnoDB, TokoDB/[11:09] 온라인 처리 가능한 명령/[11:26] 존재하는 컬럼의 길이를 늘리는 온라인 스키마 변경/[12:36] 개선 계획에 포함된 온라인 스키마 변경/[13:02] 개선 계획에 포함되지 않은 온라인 스키마 변경/[13:28] InnoDB, XtraDB/[13:41] My-sql의 온라인 스키마 변경/[14:13] Lock절, Algorithm절/[14:40] Lock절에 올 수 있는 사항/[15:25] Algorithm절에 올 수 있는 사항/[16:15] Inplace 사용시 작업 절차/[18:10] Online alter log/[19:02] Copy/[19:42] 온라인 스키마 변경 작업별 처리방식/[21:24] 외래키 생성 및 주의사항/[23:08] 프라이머리 키 추가 및 삭제/[25:00] Inplace/[25:32] auto_incriment/[26:39] 온라인 스키마 변경에 실패하는 경우/[28:23] pt-online-schema-change 툴/[29:41] actor/[32:12] 테이블 삭제/[33:00] 버퍼풀에서 해당 테이블 페이지 제거/[33:36] 디스크에서 물리적 데이터 파일 삭제/[34:25] 데이터 조작/[34:52] 기본데이터베이스 설정(use)/[35:05] 테이블 생성과 데이터 입력/[35:57] on duplicate key update/[36:38] 데이터 변경/[37:08] select문/[37:23] select 문장에서 원하는 컬럼만 조회/[37:36] My-sql 클라이언트 프로그램을 사용할 경우/[38:00] update문/[38:23] replace문/[39:54] delete문/[41:07] 실행 계획 분석/[42:14] 쿼리 실행 절차(sql파싱 단계)/[43:12] 쿼리 실행 절차(최적화 및 실행계획 수립 단계)/[44:05] 쿼리 실행 절차(데이터 읽기 단계)/[44:49] 쿼리 파서와 옵티마이저/[45:07] 옵티마이저 종류(RBO, CBO)/[46:50] 통계정보/[47:47] my-sql 5.6 통계정보/[48:50] stats_persistent/[50:41] use/[51:06] select문을 사용한 조회/[51:43] 통계정보 수집 경우/[52:50] innodb_stats_auto_recalc/[53:53] innodb_stats_sample_pages

  • 03.58분 통계정보

    MariaDB 10.0 통계정보, 히스토그램 통계정보, 조인 옵티마이저 옵션

    책갈피 : [00:05] MariaDB 10.0 통계정보 살펴보기/[00:29] 테이블의 통계정보가 다른형태로 관리될 때의 문제점/[01:23] 통합된 통계정보를 관리할 수 있는 기능 제공/[01:55] 동계정보가 부정확할 경우/[02:14] MariaDB 10.0 통계정보를 관리하는 3가지 테이블/[02:52] table_stats구조/[03:12] db_name, table_name, cardinality/[03:23] column_stats의 구조/[03:49] nulls_ratio/[04:27] index_stats의 구조/[04:38] prefix_arity/[05:00] avg_frequency/[05:46] use_stat_tables시스템/[06:00] 기본값 never로 설정할 경우/[06:30] complementary로 설정할 경우/[07:27] preferably로 설정할 경우/[07:59] innodb_stats_auto_recalc시스템 설정 변수/[08:33] show global variables명령/[09:07] table_stats조회/[09:28] analyze table명령 실행/[10:03] use_stat_tables시스템 설정값 확인/[10:54] persistent for를 이용해 columns과 indexes선택/[11:50] analyze table tbl persistent for all로 지정할 경우/[12:11] 히스토그램 통계정보/[12:35] 히스토그램이 없는 경우/[14:30] Heigh-Balanced Histogram/[15:09] Heigh-Balanced Histogram의 그림 참조/[16:37] 테스트를 위해 예제 데이터 로드/[16:52] 코드내용 확인/[17:22] 데이터베이스 생성 후 테이블 생성/[17:51] source employees.sql실행/[18:11] 불필요한 인덱스를 삭제하는 쿼리/[18:29] show tables로 생성된 테이블 확인/[18:48] use_stat_tables의 값 preferably로 변경/[19:30] mysql.table_stats에 데이터 생성 확인/[21:10] 히스토그램 자세히 살펴보기/[21:36] histogram varbinary(255)/[22:07] 알파 값/[22:51] histogram_type변수/[23:22] 히스토그램 데이터 보기/[23:52] decode_histogram함수 제공/[24:59] hist_size설정값/[26:03] salaries조회/[26:55] histogram값 확인/[28:11] mariaDB에서 histogram사용하는 방법/[28:36] histogram_size설정 기본값/[29:55] analyze table명령 사용/[30:41] column_stats의 내용 확인/[31:41] optimizer_use_condition_selectivity/[34:22] optimizer_selectivity_sampling_limit/[35:15] select문장 보기/[36:15] 실제 조회 결과/[37:07] histogram_size를 100으로 설정/[38:00] 조인 옵티마이저 옵션/[38:12] Exhaustive, Greedy/[38:45] 옵티마이저 옵션이 Exhaustive일 때/[40:07] Greedy방법/[42:52] optimizer_search_depth/[44:15] optimizer_search_depth설명/[46:43] optimizer_prune_level설명/[48:43] create table/[49:21] show tables로 조회/[49:30] 시스템 변수 설정/[50:07] select문 날리기/[51:00] optimizer_search_depth의 max값인 62설정/[51:52] profile기능 살펴보기/[52:30] show profiles이용/[53:21] statistics의 소요 시간/[54:30] 통계정보를 볼 때 주의할 점

  • 04.50분 실행 계획 분석 part1

    EXPLAIN, id, select_type, table

    책갈피 : [00:04] 실행 계획 분석을 위해 통계정보 수집/[00:26] employees db에 속한 table에 대해 analyze/[00:37] analyze를 할 때 주의할 점/[00:56] mysql.table_stats통계 테이블 드랍/[01:11] Msg_text확인/[01:47] mysql_upgrade/[02:15] 다른 디렉토리에 설치한 경우 주의할 점/[03:23] 테이블 복구 후 analyze/[03:45] optimizer_switch시스템 설정 변수/[04:09] 조회하기/[04:30] set명령을 통해 옵션 변경/[04:46] 조회하기/[05:12] global과 session선택적으로 지정/[05:30] Explain명령/[06:27] 확인할 select쿼리 문장 입력/[07:00] 표 형태로된 결과 표시/[07:30] 실행하는 순서/[09:13] update, insert, delete문장/[09:43] 각 컬럼 살펴보기/[10:07] id/[11:01] 단위 쿼리/[11:24] from절에 여러개의 테이블이 올 경우/[12:30] select_type/[13:01] select_type컬럼에 표시될 수 있는 값/[13:37] simple/[14:20] primary/[15:00] union/[15:48] derived로 표시/[16:33] dependent union/[17:03] in과 서브쿼리 안에 union이 들어있는 쿼리 예제/[18:15] 내부 쿼리가 외부의 값을 참조해서 처리/[20:26] union result/[21:15] 예제 쿼리의 실행 계획 확인/[21:52] subquery/[22:07] from절 이외에서 사용되는 subquery만을 의미/[23:15] nested query / sub query / derived/[24:14] scalar sub query / row sub query/[25:00] dependent subquery/[26:45] derived/[27:37] 메모리나 디스크에 임시 테이블 생성/[28:37] from절이 subquery를 조인으로 처리하는 형태/[29:29] derived형태의 실행 계획을 조인 형태로 변경/[30:11] 실행 계획을 보고 쿼리 튜닝/[31:03] uncacheable subquery/[31:33] subquery와 dependent subquery의 캐시방법 알아보기/[32:15] subquery와 uncacheable subquery의 차이점/[32:44] 캐시를 사용하지 못하도록 하는 요소/[32:59] not-deterministic 속성의 스토어드 루틴/[33:14] uuid함수, rand함수/[33:49] uncacheable union/[34:22] materialized/[36:19] table에 subquery2/[36:42] insert/[37:37] insert문장이 실행될 때/[38:22] update문장의 예제/[38:52] simple이라고 출력/[39:15] table 컬럼/[40:14] from절이 없어도 쿼리 실행/[41:00] , /[42:22] 쿼리를 이용해서 실행 계획을 보고 실행 계획 분석/[43:15] 첫번째 라인의 테이블 /[43:37] id가 2번인 라인 확인/[44:19] id확인/[45:00] derived2테이블을 먼저 읽어서 emp테이블로 조인 실행/[45:28] 주의점/[46:00] 임시 테이블의 별칭/[46:30] type 컬럼 살펴보기/[47:19] 조인 타입/[47:50] type컬럼의 표시되는 값/[48:30] All을 제외한 나머지는 index를 사용하는 접근방법/[49:04] index_merge를 제외한 나머지 접근방법은 하나의 index만 사용

  • 05.56분 실행 계획 분석 part2

    Type의 종류, possible_keys, key, key_len, ref, rows

    책갈피 : [00:15] type 컬럼 자세히 알아보기/[00:37] system/[01:00] test라는 테이블 생성/[01:33] tb_dual에서 select/[02:00] const/[02:42] 타입 확인/[02:53] dept_emp의 구조/[03:30] 타입 ref/[04:09] dept_no와 emp_no 둘 다 주었을 경우/[05:08] subquery 확인/[05:30] 실제 조회 했을 경우/[05:46] eq_ref/[06:25] 여러 테이블이 조인되어있는 예제/[07:15] 실행계획 살펴보기/[08:16] ref/[09:07] dept_emp에서 dept_no만 조건을 주고 select/[09:50] ref컬럼에 대한 값 확인/[10:13] const, eq_ref, ref 비교/[11:13] 동등, 비교 연산자/[12:07] fulltext/[13:05] match against구문/[14:33] 전문 검색용 인덱스/[14:52] where절의 조건 확인/[15:54] 실행계획 살펴보기/[16:07] const타입이 없을 경우/[16:17] 결과 확인/[18:06] ref_or_null/[18:48] unique_subquery/[20:26] index_subquery/[21:29] range/[21:52] 부등호, is null, between, in like연산자/[23:29] index_merge/[24:00] index_merge접근 방법의 특징/[25:22] 예제 확인/[26:10] index/[27:26] index접근 방법 사용의 경우/[28:22] order by/[29:06] limit조건/[29:26] ALL/[30:21] Read Ahead기능/[31:37] possible_keys 컬럼/[32:15] 실행했던 예제 확인/[33:07] key 컬럼/[33:37] 실행계획 확인/[33:59] key 컬럼에 표시된 값이 primary인 경우/[34:15] type 확인/[34:30] 테스트 했었던 쿼리 확인/[35:45] key_len 컬럼/[36:45] dept_emp의 구조/[37:07] select문 확인/[37:22] dept_no만 조건으로 가지고 있는 쿼리의 실행계획 확인/[37:42] key_len의 값/[38:43] dept_no조건과 함께 emp_no도 사용한 쿼리확인/[40:06] ix_todate 인덱스/[40:22] key_len에 값이 4가 출력된 이유/[41:00] key_len에서 주의할 점/[41:37] 5.1이상의 버전과 5.0이하의 버전 차이/[42:58] 두버전의 차이를 보이는 이유/[43:45] condition push down기능/[43:52] ref 컬럼/[44:12] 상수값을 지정했을 경우/[44:37] 동등 조인/[45:00] 주의 깊게 봐야할 ref 컬럼의 값/[45:49] 산술표현식을 사용해 만든 쿼리/[46:59] rows 컬럼/[47:43] rows 컬럼에 나오는 값/[48:36] 쿼리 확인/[49:20] rows 컬럼 확인/[50:21] 실행계획의 타입 확인/[51:00] extra 컬럼/[52:07] const row not found/[52:45] distinct/[54:01] 실행계획 그림 확인

  • 06.58분 실행 계획 분석 part3

    Extra 칼럼에서 쓸 수 있는 문장을 살펴봅니다.

    책갈피 : [00:10] Full scan on NULL key/[00:38] NULL을 알 수 없는 값으로 정의/[01:56] 예제 보기/[02:38] 쿼리의 조건에 col1 is NOT NULL지정/[03:43] Impossible HAVING/[03:59] 예제 보기/[04:26] e.emp_no/[05:00] Impossible WHERE/[05:28] where조건/[05:46] Impossible WHERE noticed after reading const tables/[06:57] MariaDB가 실행계획을 만드는 과정에서 쿼리의 일부분 실행/[07:30] 예제 쿼리를 실행했을 경우/[08:01] No matching mi/max row/[08:50] min이나 max의 결과는 null값을 반영/[09:03] 데이터가 없게 만드는 조건 찾기/[09:54] no matching row in const table/[10:16] Impossible WHERE와 같은 종류/[11:03] No tables used/[11:28] from절이 없는 쿼리 허용/[12:09] dual테이블 사용/[12:39] Not exists/[13:01] NOT IN(subquery)형태나 NOT EXISTS연산자 사용/[14:50] Not exists메시지 표시 주의점/[15:26] Range checked for each record(index map:N)/[16:00] 조인 조건/[18:02] 증가 시키며 처리 상황 보기/[18:30] index와 관련된 번호/[19:11] index의 순서/[19:45] type은 ALL로 표시/[20:36] 복잡한 index map의 예제/[21:00] (index map: 0x19)일 경우/[21:21] 이진법 비트배열 해석/[23:18] global status중에 select_range_check확인/[23:33] Scanned N databases/[23:52] INFORMATION_SCHEMA 데이터베이스가 제공/[25:00] 개선된 조회를 통해 메타정보를 검색할 경우/[25:21] N의 의미/[26:32] where조건 보기/[27:15] Select tables optimized away/[27:51] MyISAM테이블/[28:22] 두가지 쿼리 확인/[28:48] 실행 계획 확인/[29:06] employees CREATE TABLE 문장 확인/[29:52] salaries CREATE TABLE 문장 확인/[30:45] Skip_open_table, Open_frm_only, Open_trigger_only, Open_full_table/[31:18] 테이블의 메타정보가 저장된 파일/[31:56] 각각의 의미 알아보기/[33:00] unique row not found/[33:30] 예제의 test1과 test2의 테이블/[34:13] on절과 where절 확인/[35:20] Using filesort/[36:04] order by가 사용된 쿼리의 실행 계획에서 확인/[36:42] 실행 계획 확인/[37:07] Using index(커버링 인덱스)/[38:29] 예제의 first_name은 index가 있고 birth_date는 index가 없는 상태/[38:58] ix_firstname을 검색해서 일치하는 레코드 검색/[40:07] 동일한 쿼리문의 birth_date는 생략된 예제/[41:13] Using index메시지 출력/[41:49] 클러스터링 인덱스 보조인덱스:+프라이머리키값/[43:07] emp_no를 포함한 예제/[43:44] 추가 컬럼을 가지는 효과/[44:37] 실행 계획의 타입 컬럼, 접근 방법/[45:04] eq_ref, ref, rang, index_merge, index/[46:45] Using index for group-by/[47:37] group-by처리가 index를 이용할 때/[48:45] 타이트 인덱스 스캔(인덱스 스캔)/[50:07] 루스 인덱스 스캔/[51:34] salaries CREATE TABLE 문장 확인/[53:12] group-by에서 index를 사용하기 위한 방법/[53:52] where절이 없는 경우/[54:21] where절 인덱스 사용 불가/[54:52] 쿼리 확인/[55:07] employees구조 다시 확인/[55:30] where절 인덱스 사용 가능

  • 07.57분 실행 계획 분석 part4

    Extra 칼럼에서 쓸 수 있는 문장을 살펴봅니다.(2)

    책갈피 : [00:03] Using join buffer/[00:19] join되는 컬럼의 index설명/[01:11] dept_emp와 employees를 join하는 예제/[02:00] de테이블의 비효율적인 검색 보완/[02:23] 읽은 레코드를 임시로 저장하는 메모리 공간/[02:42] join_buffer_size 시스템 설정 변수/[04:00] Using join buffer/[04:15] BNL join/[05:24] Batched Key Access/[05:55] Using sort_union, Using union, Using intersect, Using sort_intersection/[06:30] Using union설명/[06:53] Using sort_union설명/[07:27] Using intersect설명/[07:46] Using sort_intersection설명/[08:31] Using sort_union, Using union은 index를 사용하는 조건이 or로 연결된 경우 사용/[09:20] Using sort_union, Using union의 차이/[09:52] Using temporary/[10:20] 임시테이블을 사용했을 경우 표시/[10:37] employees에서 조회/[10:56] 임시테이블 필요/[11:37] 임시테이블을 생성하는 쿼리/[13:18] Using where/[13:45] 스토리지엔진/[14:01] MySQL엔진(조인, 필터링, 집합처리)/[14:46] 실제 작업범위 제한 조건/[16:03] Extra에 나오는 Using where/[17:18] 실행계획에 filtered컬럼을 표시하고 분석/[17:37] index의 최적화 살펴보기/[19:22] MySQL엔진과 스토리지엔진의 문제점/[20:18] 작업범위 제한 조건으로 사용되지 못하는 조건/[22:03] 이원화된 구조의 불합리 제거를 위한 방법/[22:44] Condition push down기능/[22:52] Using where with pushed condition/[23:41] NDB Cluster 스토리지엔진을 사용하는 테이블에 표시/[24:06] SQL노드, Data노드/[24:37] Deleting all rows/[25:10] where조건절이 없는 delete문장의 실행계획에 표시/[25:56] 테이블의 모든 레코드 삭제/[26:22] 핸들러함수 호출로 처리/[26:48] 비교를 위해 delete문에 where조건 주기/[27:15] FirstMatch/[27:56] IN을 EXISTS로 바꿔서 처리/[28:56] 실행계획 확인/[29:52] LooseScan/[31:41] 중복된 레코드를 제거할 수 있는 경우 사용/[32:22] Materialize/[33:07] 쿼리 실행 계획의 select_type/[33:22] Scan/[33:45] Start materialize, End materialize, Scan/[34:20] Start temporary, End temporary/[34:43] Duplicate Weedout최적화/[35:15] Using index condition/[36:29] Extra에 Using where출력/[37:52] Extra에 Using index condition출력/[38:37] Index Condition Pushdown/[38:52] Rowid-ordered scan, Key-ordered scan/[39:07] MRR추가/[40:14] 랜덤데이터 파일 읽기의 횟수 줄이기/[41:00] employees에서 모든 정보를 조회한 쿼리/[41:45] Extra에 xtra에 Rowid-ordered scan출력/[42:20] 사용된 MRR최적화/[42:45] Key-ordered scan설명/[44:37] 실행 계획의 Extra컬럼-BKAH join/[45:19] join_cache_level 시스템 설정값 조절/[45:37] No matching rows after partition pruning/[47:22] EXPLAIN EXTENDED/[48:28] Filtered col추가/[49:12] 실행 계획의 filtered col/[50:14] EXPLAIN EXTENDED (추가 옵티마이저 정보)/[50:59] 추가된 select문 확인/[51:52] show warnings명령/[52:43] 상수로된 값 Georgi사용/[53:13] EXPLAIN PARTITIONS/[54:57] 실행 계획 확인/[55:15] Partition pruning/[56:15] to_days함수

  • 08.56분 옵티마이저 힌트와 실행 계획 분석 시 주의사항

    straight_join, use index, force index, ignore index, sql_cache, sql_no_cache

    책갈피 : [00:11] 옵티마이저 힌트/[01:07] 힌트의 사용법/[01:25] 힌트를 잘못사용할 경우 오류 발생/[02:42] create table문장/[03:12] 주석 시작마크 뒤에 명시되어있는 숫자/[03:36] 해당 버전 이상과 이하의 경우/[04:30] 버전별 주석/[05:10] MariaDB버전/[06:46] 많이 사용되는 옵티마이저 힌트/[07:00] STRAIGHT_JOIN/[07:30] 여러개의 테이블이 join되는 경우에 join의 순서 고정/[08:56] 쿼리의 join순서를 변경하고 싶은 경우/[09:24] 실행계획 확인/[09:39] STRAIGHT_JOIN 힌트/[10:31] from절의 테이블 순서가 변경된 쿼리/[11:11] 실행계획 확인/[11:43] 첫번째 예제와 두번째 예제의 성능의 차이/[12:39] 레코드를 처리하는 횟수 차이/[13:03] STRAIGHT_JOIN의 기준/[13:18] 임시테이블과 일반테이블의 조인/[14:03] 임시테이블끼리의 조인/[14:26] 일반테이블끼리의 조인/[15:18] 예제 확인/[16:37] 인덱스 힌트/[17:10] USE INDEX(primary)라고 힌트/[17:48] USE INDEX / FORCE INDEX / IGNORE INDEX/[18:22] USE INDEX설명/[18:56] FORCE INDEX 설명/[20:15] IGNORE INDEX 설명/[20:48] 인덱스 힌트는 용도 지정 가능/[21:11] USE INDEX FOR JOIN/[21:47] USE INDEX FOR ORDER BY/[21:59] USE INDEX FOR GROUP BY/[22:22] 인덱스를 사용한 예제/[25:45] 인덱스의 사용법이나 실행계획을 판단하기 어려울 경우/[26:30] SQL_CACHE / SQL_NO_CACHE/[27:03] query_cache_type값/[27:45] 0(off), 1(on), 2(demand)/[28:07] 힌트와 변수값의 조합/[30:33] 예제 확인/[30:52] 동일한 내용을 실행시켜 각 쿼리의 시간 측정/[32:07] 쿼리의 성능, 처리방식을 판단하기 어려운 문제점/[32:49] SQL_NO_CACHE 힌트 사용/[33:15] SQL_CALC_FOUND_ROWS/[34:35] FOUND_ROWS 함수 사용/[34:57] 힌트 사용시 주의점/[35:15] 예제 비교해서 확인/[36:22] 첫번째 예제 쿼리를 두번 실행/[41:07] 시랭 계획 분석 시 주의사항/[42:07] select_type 칼럼의 주의 대상/[42:22] DERIVED/[42:57] UNCACHEABLE SUBQUERY/[43:37] DEPENDENT SUBQUERY/[44:22] Type 칼럼의 주의 대상/[44:30] ALL, INDEX/[45:07] Key 칼럼의 주의 대상/[45:37] Rows 칼럼의 주의 대상/[45:52] 실제보다 큰 값이 표시될 때/[46:30] Rows 칼럼의 수치값/[47:04] Extra 칼럼의 주의 대상/[47:52] 쿼리가 요건을 제대로 반영하고 있는지 확인해야 하는 경우/[48:04] Full scan on NULL key/[48:30] Impossible HAVING/[48:45] Impossible WHERE/[49:00] Impossible WHERE noticed after reading const tables/[49:30] No matching min/max row, No matching row in const table/[49:50] Unique row not found/[51:00] 쿼리의 실행 계획이 좋지 않은 경우/[51:13] Range checked for each record/[51:51] Using filesort/[52:13] Using join buffer/[52:22] Using temporary/[52:36] Using where/[53:59] 쿼리의 실행 계획이 좋은 경우/[54:19] Distinct/[54:35] Using index/[54:50] Using index for group-by

  • 09.1시간 1분 최적화 part1

    풀 테이블 스캔, Order by 처리, Group by 처리

    책갈피 : [00:05] 최적화 단위작업 살펴보기/[01:17] 풀테이블스캔 사용법 설명/[01:38] 풀테이블스캔 설정조건/[01:43] 테이블 레코드 수 설명/[02:02] 인덱스조건 설명/[02:11] 조건일치 건 설명/[02:51] MariaDB에서 풀테이블스캔 설명/[03:39] InnoDB,설명/[03:54] Read ahead설명/[05:10] XtraDB 설명/[05:46] Order by 설명(Using Filesort)/[06:35] Index 함수 장단점/[07:19] Filesort 함수 장단점/[08:44] 별도정렬작업처리 확인방법/[09:02] 정렬처리방법확인/[09:17] 소트버퍼 설명/[10:41] 소트버퍼 문제상황 설명/[11:49] Multi-merge설명/[12:42] 소트버퍼 적정용량/[12:54] MariaDB 메모리안내/[14:02] Oom-Killer 설명/[14:25] 정렬 알고리즘 설명/[14:49] Single pass 설명/[15:54] Two pass 설명/[18:03] Two pass 사용예/[18:24] Single pass 사용예/[18:45] 정렬처리방식 설명/[19:08] 인덱스 사용한 정렬 설명/[19:52] 드라이빙 테이블만 정렬 설명/[19:59] 조인결과를 임시테이블에서 정렬 설명/[21:05] 인덱스 사용한 정렬사용예/[23:11] Order by 유.무 예제확인하기/[26:01] 드라이빙테이블만 정렬 사용예/[26:45] where절 조건 확인/[28:16] 드라이빙테이블만 정렬방법/[28:51] 임시테이블을 이용한 정렬 설명/[29:56] 예제확인하기/[30:55] 실행계획확인/[31:21] 정렬방식의 성능비교/[32:44] Streaming방식 설명/[33:04] Streaming 예제확인/[35:33] Streaming 주의할점/[37:49] Buffering방식 설명/[39:17] 인덱스 사용 정렬만 Streaming사용/[41:04] Order by..Limit n 최적화 설명/[42:12] 예제 보기/[43:22] 소트버퍼에 우선순위 큐 만들기/[45:24] 실행계획보기/[45:41] 상태변수 설명/[46:06] 예제 보기/[47:14] Sort_merge_passes 설명/[47:21] Sort_range 설명/[47:33] Sort_scan설명/[47:53] Sort_raws 설명/[48:54] Group by설명/[50:23] 인덱스 스캔이용 Group by 설명/[51:43] Loose 인덱스 스캔이용 Group by설명/[52:08] 예제보기/[54:58] Prefix index설명/[56:05] 예제로 Loose 유.무 따른결과보기/[57:55] 임시테이블을 사용하는 Group by설명/[58:15] 예제살펴보기/[58:58] 실행계획 확인

  • 10.56분 최적화 part2

    Distinct 처리, 임시 테이블, 인덱스 컨디션 푸시다운, 멀티 레인지 리드

    책갈피 : [00:04] Disrinct처리 /[01:12] Select Distinct 설명/[01:40] 예제보기/[02:05] 실행계획 살펴보기/[04:10] 집합 함수와 함께 사용된 Distinct설명/[04:35] 예제보기/[06:18] count함수 추가/[07:27] 3가지 Distinct 비교/[08:19] 임시테이블 설명(Using temporary)/[09:13] Memory 스토리지엔진 설명/[09:18] Aria 스토리지엔진 설명/[09:23] MyISAM 스토리지엔진 설명/[10:38] 임시테이블이 필요한쿼리 설명/[13:17] 임시테이블이 디스크에 생성되는 경우/[15:23] 실행계획 확인/[16:42] 임시테이블을 사용할수있도록 실행확인/[17:09] Created_tmp%tables 조회/[17:29] Created_tmp_tables 설명/[17:56] Created_tmp_disk_tables설명/[18:41] 인덱스를 가지는 내부 임시테이블 설명/[19:37] 예제보기/[22:28] Optimizer_switch 설정변수값확인/[22:43] Intrnal Temporary Table의 주의사항/[23:18]예제보기/[24:06] 실행계획 내부적 작업과정 확인/[26:52] 시스템설정변수 크게사용하지않기/[28:31] 인덱스 컨디션 푸시다운 설명(ICP)/[29:00] Test하기/[29:38] Optimizer_switch 결과보기/[29:56] 실행계획살펴보기/[31:49] Index내용 살펴보기/[36:19] Optimizer_switch조건 return/[36:30] 결과확인/[36:57] 멀티 레인지 리드 설명(mrr)/[37:22] 데이터보며 설명/[40:53] Mrr버퍼를 복사해서 정렬/[41:56] 옵션mrr,mrr_sort_keys 사용/[42:26] RowID 기준정렬방법 확인/[43:54] 예제확인/[47:26] Key 기준 정렬방법 확인/[48:03] 테이블구조확인/[50:58] mrr사용위해 활성화/[51:47] Key-ordered scan 정렬이유 설명/[52:51] Key와 RowID 모두 정렬 설명/[53:13] 예제확인/[54:24] Dept_emp 테이블구조 확인/[56:11] Key-ordered Rowid-ordered scan 확인

  • 11.54분 최적화 part3

    멀티 레인지 리드, 인덱스 머지, 테이블 조인

    책갈피 : [00:04] Multi range read 최적화와 정렬/[00:39] Order by first_name추가된 예제보기/[01:26] 기존예제에 Order by절 추가 실행계획보기/[01:50] 기존예제에 세가지 수정된 예제보기/[02:29] 세가지예제 비교분석/[05:13] 멀티레인지리드 최적화 주의사항/[05:41] 데이터크기 감안 설명/[06:04] Litmit n 설명/[06:26] 메모리공간 주의 설명/[07:42] 조인 버퍼 주의 설명/[08:59] 상태변수 주의 설명/[09:11] 상태변수 확인방법/[09:29] 커리실행/[10:39] 멀티레인지리드 사용설명/[10:59] 인덱스머지(Index merge)알아보기/[11:02] 인덱스머지(Index merge) 설명/[12:15] Employees에서 조회/[13:10] Ix_fristname 적용/[14:08] First_name과 hire_date 각 count보기/[14:45] 실행계획 보기/[15:37] 엑스트라칼람에 꼭 필요한 알고리즘/[15:53] Using union 사용/[17:17] 병합 설명/[17:28] 조건사이 or연산자와 and연산자 차이점/[18:27] 중복제거 우선순위 Q설명/[20:25] Using sort_union 알고리즘 설명/[21:42] 예제의 실행계획보기/[21:48] Using sort_union 사용설명/[22:00] Using intersect 설명/[22:32] 예제보기/[22:47] 실행계획보기/[23:55] Using sort_intersect 알고리즘 설명/[25:11] 예제보기/[25:57] 디폴트 설정시 주의사항설명/[26:19] 테이블조인 설명/[26:52] 조인의 종류/[27:40] Inner join 설명/[27:56] Outer join 설명/[28:21] 세미조인, 안티조인 설명/[29:03] Inner join 사용예제 보기/[31:08] Outer join 사용예제 보기/[32:37] Inner join과 Outer join 예제보기/[33:51] Full outer join설명/[34:00] 예제보기/[35:56] Full outer join 지원불가안내/[36:15] left outer join사용시 주의사항/[38:21] MariaDB 최적화단계에서 수정/[39:58] 카테시안조인 설명/[40:43] Join 테이블 비교예제/[42:57] Cross join 설명/[43:41] 예제보기/[44:25] Natural Join 설명/[44:34] 예제보기/[45:23] using키워드 사용할수 있는예/[47:11] 조인 알고리즘 살펴보기/[47:52] 블록기본 조인알고리즘 설명/[48:15] Flat방식 설명/[48:23] Incremental 방식 설명/[49:12] Optimier_switch 설정변수 사용방법/[50:49] Join_chche_level 설정변수 사용방법/[52:35] Join_chche_level 0~8 설정에 따른결과 /[53:14] Outer Join 블록알고리즘 설정방법

  • 12.55분 최적화 part4

    테이블 조인, 조인 알고리즘, 서브 쿼리, 세미조인

    책갈피 : [00:12] 조인 버퍼 설정 /[00:46] Join_buffer_size 설명/[01:14] join_cache_space_limit 설명/[01:31] Optimize_join_buffer_size= on설정/[02:15] 단순 네스티드 루프 (NL) 설명/[03:30] Single_sweep multi join 커리설명/[04:06] 실행계획보기/[05:10] 단순네스티드루프와 블록네스티드루프 차이점/[05:59] 예제안에 join에 대한 설명/[07:10] 조인버퍼의 필요성/[07:58] dept_emp ix 인덱스 이용/[08:10] 인덱스통해 dept_emp 접근/[08:23] Employees 테이블에 접근/[08:57] 데이터보기/[09:44] 조인버퍼사용시 달라지는점 확인/[10:46] Join이 완료되면 조인버퍼 자동해지/[10:54] 구체적인 방법 보기/[11:34] Employees 테이블에 해당조건 검색/[11:43] 조인버퍼 레코드 결합해서 반환/[11:56] 쿼리 실행계획 순서 확인/[13:21] MariaDB 5.3버젼 개선점 설명/[13:28] 개선점에 대한 장점/[13:56] 조인버퍼의 incremental 모드 설명/[15:04] 아우터조인 설명 개선점 설명/[15:48] 세미조인 설명 개선점 설명/[15:54] 블록 네스티드 루프 해시 조인 설명/[16:45] 실행계획보기/[16:56] Build phase 설명 /[17:21] Probe phase 설명/[18:24] 실행계획보기/[19:26] 블록 네스티드 루프 해시 개념 설명/[20:24] 블록 인덱스 조인 설명/[20:37] 블록 인덱스 조인은 멀티레인지 이용/[22:16] 드리븐 테이블 읽어 리턴/[22:37] Rowid기준 정렬설명/[23:21] Key 기준 정렬 설명/[24:19] Rowid와 Key 모두정렬 설명/[25:05] 블록인덱스해시조인 설명/[25:28] Build phase 사용/[25:43] Probe phase 사용/[25:57] 조인시의 주의사항/[26:05] 조인실행결과의 정렬순서보기/[26:58] 실행계획보기/[29:57] Inner join과 outer join의 선택시 주의사항/[31:29] 서브쿼리 최적화/[32:10] 세미조인 서브쿼리 최적화/[32:15] 인서브 쿼리보기/[34:10] 세미조인 최적화 적용가능상황/[36:26] Table pullout 최적화 설명/[37:29] Employees를 풀스캔 emp칼럼 얻어오기/[38:36] 실행계획보기/[39:40] Show warnings 명령으로 warnings 확인/[41:43] FirstMatch 최적화/[42:27] 실행계획보기/[44:15] MariaDB 10.0에서 FirstMatch의 장점/[46:00] Correlated Subquery 최적화에 사용가능/[46:09] Group by, 집합함수 Subquery 최적화 사용불가/[46:54] FirestMatch 최적화 사용된경우 설명/[47:43] Semi-join Materialization 최적화 설명/[49:02] 실행계획보기/[50:29] Fromdate 칼럼에 index생성/[51:37] 실행계획보기/[52:16] Materialization-scan/lookup 설명

  • 13.53분 최적화 part5 & 스토리지 엔진 part1

    세미조인 서브쿼리 최적화, LooseScan 최저과, Duplicate Weedout 최적화, 세미조인이 아닌 서브쿼리 최적화, 서브쿼리 캐시, Aria, XtraDB, InnoDB

    책갈피 : [00:06] LooseScan 최적화/[00:30] Query 보기/[00:39] Dept_no 가져오기/[01:51] 실행계획보기/[02:54] Semi-join Materialization으로 실행/[03:13] LooseScan 사용조건 /[04:43] loossecan off 설정/[04:52] Duplicate Weedout최적화/[06:39] 세미조인이 아닌 서브쿼리 최적화/[07:52] Materialization 최적화 /[09:02] RowId-merge partial matching 알고리즘/[09:24] Table-scan partial matching 알고리즘/[10:07] Optimizer_switch on/off 로 제어/[11:44] In-to-EXISTS 최적화 /[12:01] 예제보기/[13:07] In_to_exists on으로 조정/[13:22] 서브쿼리 캐시/[13:46] 예제 실행계획보기/[16:17] 캐시의 히트율이 낮은경우(HitRatio<02)/[16:31] 캐시의 히트율이 적정수준(0.2<=HitRatio<0.7)/[16:56] 캐시의 히트율이 높은경우(HitRatio>=0.7)/[17:24] 스토리지 엔진 설명/[18:34] Aria 스토리지 엔진/[18:41] MyISAM 장.단점/[20:30] 트랜잭션 옵션 설명/[22:19] 페이지캐시 설정/[24:24] 시스템 설정 변수/[24:38] Aria_pagecache_buffer_size/[24:48] Aria_sort_buffer_size/[25:40] Aria_group_commit,aria_group_commit_interval/[26:25] Aria_block_size/[26:52] Aria_used_for_temp_tables/[27:37] XtraDB 스토리지 엔진/[29:29] InnoDB와 XtraDB 스토리지 엔진교체/[31:03] InnoDB와 XtraDB 스토리지 엔진교체방법확인/[32:27] My.ini 초기파일 확인/[33:18] Ignore_builtin_innodb=on설정/[33:23] Plugin-load=ha_innodb.dll 설정/[33:35] MaraiaDB로 변경부분확인/[34:43] InnoDB에서 스토리지엔진교체방법/[34:46] My.ini초기파일 확인/[34:50] Ignore_builtin_innodb=on 주석풀기/[34:53] Plugin-load=ha_xtradb.so 주석풀기/[35:33] InnoDB 스토리지 엔진/[36:20] MySQL 5.6 InnoDB 새로추가된 기능/[37:09] 영구적 통계정보/[39:04] 데이터 읽기 최적화/[39:59] Kernel mutex/[42:24] Multi threaded purge/[42:52] Query보기/[45:24] MVCC,롤백->Undo영역/[45:45] 메인스레드/[46:13] Innodb_purge_threads/[47:28] 독립된 플러시 스레드/[49:51] 가변페이지사이즈 /[52:27] Mysqldump,SELECT INTO..OUTFILE

  • 14.52분 스토리지 엔진 part2

    InnoDB 스토리지 엔진, 더티 페이지 플러시, InnoDB 버퍼 풀과 리두 로그의 관계

    책갈피 : [00:02] 테이블 스페이스 복사/[01:10] *ibd만 가져오고나 복구가능/[01:18] 테스트용만들기/[01:41] Flush tables tb_trans2 for export/[02:41] Unlock tables 명령/[03:12] DISCARDTABLESSOACE 명령/[04:05] IMPORT TABLESPACE 명령/[04:17] Select로 tb_trans1 확인/[04:58] 독립된 언두 스페이스/[06:07] Innodb_undo_directory 설명/[06:37] Innodb_undo_tablespaces설명/[07:35] Innodb_undo_logs 설명/[09:02] 읽기전용 트랜잭션 최적화/[11:52] 버퍼 풀 덤프 & 로드/[14:05] Innodb_auto_lru_dump 사용/[14:29] Xtradb_admin_command 사용/[18:12] Innodb_buffer_pool_pages_date/[19:24] Innodb_blocking_buffer_pool_testorm/[19:56] MySQL 5.6 덤프하는 방법/[21:10] Innodb_buffer_pool_damp_new/[21:54] Innodb_buffer_pool_load_new/[22:26] Innodb_buffer_pool_dump_at_shutdown/[22:48] Innodb_buffer_pool_load_at_startup/[23:15] 명령 사용 결과보기/[24:29] Innodb_buffer_pool_load_abort/[24:40]리드로그사이즈(Write Ahea Log)/[25:21] Innodb_log_file_size/[25:42] Innodb_log_files_in_gorup/[26:09] Innddb_group_home_dir/[28:28] 리두 로그 크기변경/[29:14] MaraiDB 5.5에서 리두로그 크기변경방법/[31:54] 데드락 이력/[33:01] Innodb_print_all_deadlocks/[33:26] 더티페이지 플러시/[34:07] LRU_list 설명/[34:14] Flush_list 설명/[34:38] InnoDB 버퍼 풀과 리두로그의 관계/[36:52] Write ahead log/[37:22] Flush_list/[38:11] LRU리스트/[40:04] Innodb_old_blocks_pct 변수변경/[41:49] InnoDB와 xtraDB의 더티플러시/[42:05] Checkpoint age 중요/[42:42] 그림으로 설명/[44:17] 모드에따른 상태 설명/[47:38] MySQL 5.5 InnoDb의 더티 플러시/[47:57] Adaptibe flushing/[50:11] Innodb_io_capacity/[50:43] Innodb_max_dirty_pages_pct

  • 15.1시간 1분 스토리지 엔진 part3

    더티 페이지 플러시, 페이지 클리너, 어탭티브 플러시, 버퍼 풀 성능 개선, 원자 단위의 쓰기, 확장된 InnoDB 엔진 상태 출력

    책갈피 : [00:11] MariaDB5.5 XtraDB의 더티플러시/[01:01] Innodb_adaptib_flushing_method설정/[01:33] Native /[01:52] Estimate /[02:53] Keep_averag /[03:37] Innodb_flush_neighbor_pages설정/[04:16] Area /[04:37] Const/[04:49] None/[05:21] Innodb_checkpoint_age_target설정/[06:20] Innodb_flush_method설정/[06:28] Direct Io/[06:45] Fdatasync/[07:18] O_DSYNC/[07:42] O_DIRECT/[10:53] MySQL 5.6 InnoDB의 더티플러시/[11:04] 마스터스레드/[11:39] Page cleaner 스레드/[11:51] Access Pattern : LRU_list/[12:17] Checkpoint Age : Flush_list/[14:28] Innodb_lru_scan_depth/[15:39] 플러시할 더티페이지수를 구하는 공식/[16:33] Innodb_io_capacity/[18:00] Innodb_io_capacity_max/[19:40] 어탭티브 플러시 알고리즘/[20:28] Innodb_adaptive_flushing_lwm/[20:59] Innodb_max_dirty_pages_pct_lwm/[21:50] Innodb_flushing_avg_loops/[24:39] MariaDB 10.0 XtraDB의 더티플러시/[24:45] MySQL5.6 플러시할 더티페이지 수 공식/[26:21] MariaDB10.0 플러시할 더디페이지 수 공식/[27:04] 버퍼 풀 성능 개선/[27:43] Non Uniform Memory access(NUMA)/[28:08] UMA아키텍처 & NUMA아키텍처 비교/[30:55] Numactl /[31:05] Numa_interleave/[31:20] 버퍼 풀 메모리 초기할당/[32:11] 응용 프로그램에서 접근시 할당/[33:30] Innodb_buffer_pool_populate/[34:34] InnoDB 잠금 세분화/[34:45] Kernel_mutex/[35:36] 분리된 mutex/[37:07] I/O 기반의 워크로드 성능 향상/[37:31] 프리페이지 준비보다 더 빠르게 소진되는 경우/[37:49] Free_list가 모두 소진/[38:01] Free_list의 동기화를 위한 뮤텍스 대기가 증가/[38:26] 프리페이지를 준비해도 뮤텍스 대기할 경우/[39:30] Innodb_empty_free_list_algorithm/[39:55] 어댑티브 해시 파티션/[40:47] Innodb_adaptive_hesh_index_partitions/[41:50] 원자 단위의 쓰기/[41:54] 리두 로그/[42:19] 파샬페이지(Torn_page)/[45:07] Innodb_use_atomic_write/[45:51] 확장된 InnoDB엔진 상태 출력/[46:15] Innodb_show_verbose_locks/[46:27] Innodb_show_locks_held/[47:21] 설정결과보기/[49:01] 상태변수들의 그룹/[49:18] 백그라운드 스레드 관련 상태변수/[50:58] 세마포어 관련 상태변수/[54:13] 인서트 버퍼와 어탭티브 해시 인덱스 관련 상태변수/[56:15] 로그관련 상태변수/[57:28] 버퍼 풀 관련 상태변수/[59:22] 트랜잭션 관련 상태변수

  • 16.55분 스토리지 엔진 part4

    XtraDB 리두로그 아카이빙, 변경된 페이지 트랙킹, 전문 검색 인덱스 추가, 전문 검색 인덱스를 위한 테이블 스페이스, Memcached 플러그인, 카산드라 스토리지 엔진, CONNECT 스토리지 엔진

    책갈피 : [00:03] XtraDB 리두로그 아카이빙/[00:14] 리두로그/[00:49] 로그파일 ib_log_archive_(시작_lsn)/[01:12] log파일 생성/[01:31] Purge archived logs before 삭제 명령/[01:55] Purge archibed logs to 삭제 명령/[03:03] Innodb_log_archive 시스템변수/[03:15] Innodb_log_arch_dir 시스템변수/[03:35] Innodb_log_arch_expire_sec 시스템변수/[04:12] Incremental Backup(증분백업)/[04:51] 변경된 페이지 트랙킹/[04:57] 리두로그 엔트리 기반/[05:06] 특수 비트맵파일로 기록/[05:36] Innodb_track_changed_pages 시스템변수/[05:47] Ib_modified_log__.xdb/[06:20] 명령설명/[07:08] Flush changed_page_bitmaps 명령/[07:34] Reset changed_page_bitmaps 명령/[07:45] Purge changed_page_bitmaps before 명령/[08:01] Show engine innodb status:log/[08:44] Innodb_changed_pages/[09:03] 전문검색엔진/[09:48] 전문 검색 인덱스 추가/[09:55] 쿼리보기/[10:36] Add fulltext 로 전문 인덱스 생성/[12:08] 전문검색 인덱스를 위한 테이블 스페이스/[12:20] Ibd 파일 생성확인/[12:41] Fts_xxx-yyy-doc_id.ibd/[13:10] Fts_xxx_config.ibd/[13:44] Fts_xxx_stopword.ibd/[14:20] Fts_added.ibd,ftx_xxx_deleted.ibd/[15:41] Fts_being_added.ibd,fts_xxx_being_deleted.ibd/[16:33] Fts_xxx_added_chche.ibd, fts_xxx_deleted_chche.ibd/[18:02] _DOC_id.ibd 전문인덱스별로 존재/[18:41] 전문검색 인덱스관련 Information_schema정보/[19:34] 테이블이 가지는 내용의 범위기준 /[19:42] InnoDB의 모든전문검색 인덱스에 적용/[20:05] Innodb_ft_cofig, innodb_ft_default_stopword/[20:14] 전문검색 인덱스를 가진 테이블 단위로 적용/[20:19] Innodb_ft_aux_table/[20:38] 쿼리에 set명령보기/[21:02] Innodb_ft_index_table/[21:31] Innodb_ft_index_cache/[22:17] Innodb_ft_inserted, innodb_ft_deleted/[22:33] Innodb_ft_being_inserted, innodb_ft_being_delelted/[22:40] 전문검색인덱스사용/[22:51] 전문검색쿼리문법사용/[23:46] 전문검색엔진사용시 주의사항/[24:21] Innodb_ft_default_stopword /[25:24] Create table stopword_foe_emp 테이블생성/[25:41] 데이터확인/[26:44] Innodb_ft_user_stopword_table 생성가능/[27:12] 단위검색어의 최소길이/[28:12] Innodb_ft_result_cache_limit/[29:03] Innodb_ft_total_cache_size/[29:31] Memcached 플러그인/[30:18] MariaDB5.5 에서 HandlerSocker 제공/[30:23] My SQL5.6 에서 Memcached API 제공/[30:38] Memcached 플러그인/[31:57] Memcached 플러그인 제공기능 특성/[32:17] Innodb 스토리지 엔진 접근성/[32:24] 쿼리분석,최적,해들러 API우회/[32:35] 텍스트,바이너리기반프로토콜 지원/[32:45] Memcached의 value 매핑/[32:58] 메모리조합/[33:06] Daemon_memcached_option 시스템변수/[33:14] Innodb_api_trx_level 시스템변수/[33:30] 카산드라 스토리지 엔진/[34:34] 카산드라 클러스터/[35:38] 가십통신/[36:39] 쓰리프트통신 설명, 단점/[36:57] 네이티브통신/[37:33] 다차원key value/[38:15] 로우키(col_name,value..)/[39:07] 로우키 개념/[39:45] CQL(Cassandra Quert Lan)/[40:08] 컬럼 패밀리/[40:40] 키 스페이스/[41:09] CQL제약사항/[41:43] MariaDB에 카산드라 스토리지엔진 /[42:24] 카산드라스토리엔진 활성화/[43:00] 카산드라 스스토리엔진 시작시 자동 등록/[43:21] Create keyspace mariadtest 설정/[44:14] Columnfamily cf1만들기/[46:02] Select하기/[46:15] Cassandra-cli 클라이언트에 결과보기/[46:54] Conneect 스토리지엔진/[47:51] Conneect 스토리지엔진 설치/[49:37] Oracle에 emp 파일이 존재할때/[50:47] CONNECT BY이용/[51:35] Engin_condition_pushdown ON설정/[52:17] 오라클 RDBMS 테이블 연결/[52:23] My.ino 설정파일 연결/[52:54] Create table문 보기/[54:17] 운영체제의 디렉터리 연결

  • 17.58분 스토리지 엔진 part5 & 기타 기능 part1

    시퀀스 스토리지 엔진, Mroonga 전문 검색 스토리지 엔진, 성능 향상, 스레드 풀, 관리 및 진단

    책갈피 : [00:04] 시퀀스 스토리지엔진/[00:29] Show engines명령으로 설치 확인/[00:40] 미설치시 설치 명령어/[01:43] 시퀀스 스토리지엔진에 다른점/[01:55] 예제보기/[02:42] 각쿼리의 결과값/[03:44] Convert 함수 사용/[04:02] 시퀀스 스토리지 엔진 활용 사례/[04:28] 누락된 번호찾기/[04:49] Seq_test 테이블 생성/[05:05] 시퀀스스토리지엔진 이용/[05:10] 누락번호찾기 결과 확인/[06:09] 순차적으로 조합된 번호 쌍 생성/[06:14] 예제결과 확인/[06:35] 배수 또는 공배수찾기/[06:46] 예제결과 확인/[07:18] 순차적인 알파벳생성/[07:26] 예제결과 확인/[08:15] 순차적인 날짜 생성/[08:26] 예제결과확인/[08:58] 데이터복제가공/[09:50] 예제결과 확인/[11:23] Mroonga 전문 검색 스토리지 엔진/[12:28] Mroonga 아키텍쳐 /[13:26] 스토리지엔진모드 실행모드/[13:47] 래퍼(wrapper)모드 실행모드/[14:24] 인덱스알고리즘/[14:59] 구분자(stopword)방식/[16:44] N-gram방식/[17:35] Front-end 인텍스, back-end 인덱스/[18:47] 구분자방식으로 검색했을때 결과/[19:00] N-gram방식으로 검색했을때 결과/[19:35] Mroonga 설치방법/[19:51] 설치버전확인/[20:20] Storage mode에서 full text search방법/[21:04] Full text search 결과 확인/[21:40] Fulltex index에 comment 설정 가능/[22:18] Tokenmecab의 옵션 /[22:54] TokenBigram/[23:24] Tokenmecab/[23:46] Tokenbigramsplitsymbol/[24:40] 기타기능/[24:59] 성능향상/[25:07] 스레드풀(Therad pool)/[25:15] Mysql서버의 전통적 연결 및 처리방식/[26:56] MaraiDB의 스레드 풀/[27:18] 스레드 개수는 동적으로 관리/[27:32] 스레드 풀 자체의 관리비용이 낮음/[27:37] 운영체제의 능력을 최대한 활용/[27:55] 스레드 최대 개수 제한/[28:19] 윈도우 mariaDB 스레드풀/[28:20] 유닉스 mariaDB 스레드풀/[28:36] MariaDB 스레드풀의 구조/[30:05] CPU 바운드작업 효율적/[30:19] 디스크 바운드 작업 병목현상발생/[31:29] MariaDB 스레드 풀의 사용과 튜닝/[32:21] 스레드풀과 관련된 시스템설정변수/[32:30] 윈도우 시스템 설정변수/[33:41] 유닉스 시스템 설정변수/[37:27] Extra_port, 시스템 설정변수/[38:05] Extra_max_connections 시스템 설정변수/[38:51] Threadpool_threads/[38:58] Threadpool_idle_threads/[39:32] 관리 및 진단/[40:24] Show explain for(thread-id)/[40:52] Prodcesslist확인/[41:54] 쿼리결과확인/[42:51] 슬로우 쿼리 로그에 실행계획출력/[43:16] Log_slow_verbosity 시스템변수/[43:33] Microtime 옵션/[43:42] Query_plan 옵션/[44:03] Full 옵션/[44:19] Explain 옵션/[44:43] 슬로우 쿼리 예제/[45:13] 슬로우쿼리 결과 확인/[45:30] 구조화된 실행계획 출력/[45:42] Json형태의 포맷으로 출력/[46:18] 쿼리예제/[47:09] 스레드 단위의 메모리 사용량/[47:14] 예제확인/[47:40] Show status; 실행/[49:22] Shutdown 명령/[50:08] Shutdown 명령실행/[50:13] 사용자나 쿼리 실행 강제종료(Kill)/[51:12] 특정커넥션에서 실행중인 query만 종료/[52:08] Information_schema.processlist/[52:22] Kill query와 kill query id의 차이점/[53:28] 특정유저의 커텍션이나 쿼리 강제종료/[54:25] 강제종료의 수준조정/[55:27] Soft옵션/[55:48] Get diagnostics/[56:23] 프로시져에서 Get diagnostics 사용 예제/[57:12] 출력결과 확인

  • 18.53분 기타 기능 part2

    개발 생산성, 정규 표현식 기능 확장, 가상 칼럼, 동적 칼럼, 명시적 파티션 지정, 파티션 테이블 스페이스 교체, 바이너리 로그 원격 백업

    책갈피 : [00:06] 개발 생산성/[00:25] Limit rows examined/[01:12] 예제보기/[02:03] 출력결과 확인/[02:39] Show warnings 명령/[03:01] Limit rows examined이용한 다른 예제/[03:33] 첫번째 쿼리 확인/[03:43] 두번째 쿼리 확인/[04:22] 출력결과 확인/[04:48] 기본조건에 from date조건 추가된 예제/[05:48] Delete..returning/[06:34] 예제보기/[06:54] 출력결과 확인/[07:11] Select로 결과 확인/[07:26] 마이크로 초 단위의 시간저장/[07:43] 예제보기/[07:52] Datetime에 정밀도 지정/[08:06] 출력결과 확인/[08:59] Unix_timestamp 함수/[09:33] Date_sub함수/[10:23] Datetime타입의 기본값 설정/[11:29] 예제보기/[12:21] 정규 표현식 기능 확장/[13:20] Regexp_replace(문자열, 정규표현식,대체문자열)/[14:02] 정규표현식의 예제/[14:13] 출력결과 확인/[14:34] 대소문자 구분/[15:16] Regexp_instr(문자열, 정규표현식)/[15:38] 출력결과 확인/[16:31] Regexp_substr(문자열, 정규표현식)/[16:51] 출력결과 확인/[17:03] 가상(Virtual)칼럼/[17:25] 예제보기/[17:50] Birth_month 칼럼 virtual로 가상칼럼/[18:48] 출력결과 확인/[19:07] 가상(Virtual)칼럼 제약사항/[20:10] Virtual에서 지원하는 스토리지엔진/[20:49] Persistent/[21:21] 가상(Virtual)칼럼사용시 주의사항/[21:34] 출력결과 확인/[21:50] 동적(dynamic)칼럼/[22:31] 출력결과 확인/[24:46] 동적칼럼 유틸리티함수/[24:53] Column_create /[25:30] Column_add/[26:19] Column_get/[27:12] Column_delete/[27:46] Column_exists/[28:25] Column_list/[29:04] Column_check/[29:43] Column_json/[30:45] Maria의 동적칼럼 제약사항/[31:10] 파티션/[31:41] 명시적 파티션 지정/[32:25] 파티션사용 예제보기/[33:10] Select문 보기/[33:53] Insert문 보기/[35:14] 출력결과 확인/[36:18] 파티션 테이블 스페이스 교체/[36:56] 파티션 테이블과 스와핑할 테이블의 구조/[37:10] 스와핑될 테이블은 임시테이블이 아니여야함/[37:15] 스와핑될 파티션의 기준칼럼 조건만족/[37:25] 다른테이블과의 참조관계가 아니어야함/[37:34] Alter,insert,create,drop권한/[39:31] 출력결과 확인/[43:01] 백업/[43:34] Mysqldump /[45:34] 바이너리 로그 원격 백업/[46:11] Mysqlbinlog/[46:54] 레플리케이션 API/[47:54] Mysqlbinlog 필요로하는 옵션/[48:30] Read-from-remote-server 옵션/[48:48] Raw 옵션/[49:13] Stop-never 옵션/[49:57] Stop-naver-slave-server-id=id 옵션/[50:13] Result-file 옵션/[51:15] To-last-log 옵션

  • 19.2시간 14분 기타 기능 part3

    XtraBackop 원리, XtraBackop 기능, 스트리밍 백업, 압축, 암호화, 슬레이브 백업, 병렬 백업, 백업 속도 조절, 개별 테이블 복구, PIT 복구, 증분 백업, 부분 백업, 컴팩트 백업, 스트리밍 백업, 암호화 백업

    책갈피 : [00:03] XtraBackup /[00:43] XtraBackup 패키지구성/[01:06] Innobackupex/[01:57] XtraBackup/[02:28] XtraBackup 옵션/[03:05] Xbstream/[03:46] Xbcrypt/[04:23] XtraBackup 원리/[05:12] 데이터변경이 없을 경우/[05:31] 데이터변경이 있을 경우/[06:22] Backup이 완료된 시점/[08:06] Apply-log/[08:58] Flush tables with read lock/[09:29] XtraBackup 도구사용법/[10:01] Backup 실행할때 innobackupex 이용/[10:26] -- backup/[10:28] Defaults-file/[11:29] backup명령이 실행될때/[11:37] Xtrabackup InnoDB가 backup /[12:33] Xtrbackup 버전이 달라져야함/[13:06] 리눅스는 uses posix_fadvise()/[14:00] InnoDB table 데이터파일 /[14:07] InnoDB 리두로그 추적/[14:30] Backup이 완료되면 나머지 테이블 복사/[14:52] Completed ok!/[15:04] 백업 디렉토리/[15:16] Xtrabackup_checkpoints/[16:00] Xtrabackup_binlog_info/[16:12] Xtrabackup_slace_info/[16:32] --slave-info/[16:53] backup-my.cnf/[17:24] Xtrabackup_binary /[17:54] 로그적용(--apply_log) 과정/[19:00] --apply-log옵션으로 Innobackupex 백업/[19:12] --apply-log 실행결과화면/[19:56] 리두로그와 데이터디렉토리 출력/[20:06] Starting Innodb instance for recovery/[20:29] InnoDB: 메세지/[21:11] 리두로그 적용과정 완료/[21:18] Shutdown completed 출력 종료/[21:39] 복구(--copy-back)과정/[22:23] --copy-back로 innobackupex 복구/[23:12] --copy-back 작업 실행/[23:20] 설정파일,데이터파일,리두로그파일 복사/[23:41] 복사된내용/[24:40] 데이터파일과 리두로그파일 권한변경/[25:28] Xtrabackup기능/[25:44] 스트리밍백업/[27:11] 변형된 tar, xvstream 포맷/[27:59] Xbstream/[28:37] -x,-c, -C 옵션/[29:56] nc, rsync 유틸리티 이용/[30:08] 압축(quicklz qpress)/[30:32] 암호화(xbcrypt)/[31:12] Aes128, aes192, aes256 유틸리티/[31:37] Xbacrypt 옵션/[33:29] 슬레이브 백업(--slave-info)/[34:34] Xtrabackup_slave_info/[35:25] 병렬(parallel) 백업/[35:34] parallel 옵션/[36:16] --compress-threads 옵션/[36:46] 백업속도조절/[37:40] --throttle=n 옵션/[39:00] 개별 테이블 복구/[39:51] Alter tavle 명령/[39:52] Discare tablespace / inport tavlespace/[40:26] Flush tables with read lock 개선/[40:33] 슬레이브 MariaDB/[40:41] 마스터 MySQL서버의 바이너리 로그위치/[42:28] 대기 & 강제종료 옵션/[42:46] --lock-wait-timeout/[43:31] --lock-wait-query-type=all/update/[44:33] --kill-long-queries-timeout/[45:04] --kill0long-query-type=all/select/[45:44] Xtrabackup를 옵션이용한 예제 /[46:31] Xtrabackup 고급사용/[46:44] PIT(point in time)복구/[47:49] PIT(point in time)복구 사용방법/[49:20] 결과가능하게하는 명령어/[49:34] --apply-log 옵션/[49:42] --copy-back 옵션/[49:50] mysql서버 재시작/[51:40] Stop-position, Start-position/[52:46] 증분(Increamental) 백업/[53:40] InnoDB/XtraDB의 로그시퀀스 번호(LSN)/[53:50] 상황예제/[56:23] Incremental-basedir 옵션/[57:18] 풀백업과 증분백업 복구방법/[57:50] --redo-only 옵션/[01:00:19] apply-log가 끝나면 copy-back /[01:00:39] 부분(Partial) 백업/[01:01:05] --include 옵션/[01:01:14] --tables-file 옵션/[01:01:26] --database 옵션/[01:01:40] 정규표현식/[01:02:15] 백업 대상 테이블을 파일로 명시/[01:02:43] 데이터베이스 단위 백업/[01:03:26] 부분백업 복구/[01:03:51] .exp .ibd .cfg 파일생성/[01:04:51] 컴팩트(compact) 백업/[01:06:09] --compact/[01:07:04] compact=1/[01:07:26] 스트리밍(streaming)백업/[01:08:05] streaming 백업 예제/[01:09:14] ssh통해 rmote_host로 전송/[01:11:10] 아카이빙 해제된 파일위치/[01:11:30] 암호화(Encrypt) 백업/[01:11:46] 복호화/[01:12:17] 암호화 알고리즘/[01:12:26] 암호화 백업 사용시 필요한것/[01:13:56] openssl이용 암호화 키 발생/[01:14:18] 생성된 암호화키를 이용 백업실행/[01:15:33] .xcrypt 확장자로 생성/[01:15:45] 암호화된 데이터파일들을 복호화/[01:16:03] --parallel 옵션/[01:17:00] 레플리케이션/[01:17:16] Global transaction ID/[01:18:03] 바이너리 로그 파일명, 위치(offset)/[01:18:37] 노드아이디/[01:18:49] 트랜잭션 아이디/[01:19:31] Gtid가 기존 binary-log이벤트와 사용됐을경우/[01:19:49] 마스터 MariaDB/[01:20:18] 슬레이브 MariaDB/[01:21:11] 복제 토플러즈/[01:23:09] 사용자트레픽이 B(Slave) 로 유입/[01:23:42] B서버 과부화/[01:24:13] Global transaction ID 사용/[01:24:34] Change master to master_host='b'/[01:26:05] MariaDB 10.0 GTID/[01:26:51] 도메인아이디/[01:27:15] 서버아이디(server_id)/[01:27:29] 트랜잭션 아이디/[01:29:31] Change master명령어/[01:30:00] GTID를 이용한 복제구축/[01:30:05] 바이너리 로그파일과 위치기반의 복제를 GTID로 변경/[01:31:00] 새로운 슬레이브를 GTID 사용하도록 구축/[01:31:15] 기존 MariaDB서버의 데이터백업/[01:31:17] 새 슬레이브 MariaDB서버에 백업된 데이터복구/[01:31:25] 백업된 시점의 바이너리 로그 파일명과 위치확인/[01:31:35] 마스터의 GTID확인/[01:31:46] 새 슬레이브 값을 위에서 확인된GTID값으로 변경/[01:31:51] 새 슬레이브에서 Change master 명령실행/[01:32:25] Binlog_gtid_pos()/[01:33:05] 백업시점 GTID를 gtid_slave_pos로 지정/[01:33:32] GTID 사용 복제연결할때/[01:34:09] 바이너리 이름 위치지정 방법/[01:34:50] master_use_gtid=current_pos;/[01:35:05] master_use_gtid=slave_pos;/[01:35:13] Show slave status/[01:36:58] GTID_slave_pos/[01:37:18] GTID_slave_pos의 예제/[01:38:15] GTID_current_pos/[01:39:38] Show slave status : Using_GTID:/[01:40:12] GTID를 사용한 복제관리/[01:40:31] 바이너리 로그 파일명과 위치로 GTID찾기/[01:41:31] GTID까지 대기/[01:41:43] Master_pos_wait()/[01:42:13] Master_GTID_wait("0-1-11'10)/[01:43:12] 초기복제연결/[01:43:36] changer master명령어/[01:43:52] Master_use_gtid=slave_pos/[01:44:00] 복제 멈춤 및 복제 관련 설정제거/[01:44:18] Stop slave; / reset slave all;;/[01:44:29] BinaryLog 파일과 위치기반의 복제를 GTID기반으로 변경/[01:44:59] Master_use_gtid=current_pos;/[01:46:05] 마스터 MariaDB 변경/[01:47:24] 특정위치까지 실행 후 복제 멈춤/[01:47:48] Start slave until master_log_file/[01:48:13] GTID를 이용한 슬레이브에서 트랜잭션 건너뛰기/[01:48:29] Set global gtid_slave_pos/[01:49:08] MySQL 5.6 GTID/[01:49:23] 서버 UUID/[01:49:31] 트랜잭션 번호/[01:50:34] 바이너리 로그 활성화(log-bin 시스템변수)/[01:50:41] 서버 아이디 설정/[01:50:47] 슬레이브가 복제통해 실행한 데이터 바이너리로그에기록/[01:50:52] GTID 컨시스턴트 모드 활성화/[01:51:01] GTID 사용 활성화/[01:51:42] GTID 컨시스턴트 모드활성화시 제약사항/[01:51:51] GTID를 이용한 복제구축/[01:52:54] 바이너리로그파일과 위치기반의 복제를 GTID기반 복제로변경/[01:53:21] Change master 명령 실행/[01:53:31] GTID 사용하도록 새로운 슬레이브구축방법/[01:54:17] 기존 Mysql서버의 데이터백업/[01:54:27] Mysqldump,xrtabackup 사용방법/[01:55:11] Gtid_executed, gtid_purged/[01:56:42] GTID이벤트 건너뛰기/[01:56:51] 서버 UUID;트랜잭션 번호/[01:57:30] 멀티 소스 복제(multi-soured replication)/[01:58:15] 멀티 스레드 복제/[02:01:29] 크래시 세이프(crash sae) 슬레이브/[02:01:44] IO스레드, SQL스레드/[02:03:30] Duplicate key 에러/[02:05:35] Row기반의 복제 기능 개선/[02:05:43] Statement포맷/[02:05:53] Row 포맷/[02:06:22] Row 포맷의 용량 최적화/[02:06:52] Row포맷 바이너리 로그를 위한 정보선 로그이벤트/[02:07:13] Annotate_rows/[02:07:54] 지연된 복제/[02:08:11] Change master to... master_delay=n;/[02:08:48] MaraiDB 와 Mysql서버간의 복제/[02:10:11] 그 외의 기타 기능 개선/[02:10:39] 바이너리 로그 체크섬/[02:10:47] 바이너리 로그 체크섬 시스템변수/[02:11:12] 바이너리 로그 API/[02:11:46] Hbase, Cassandra/[02:12:13] 바이너리 로그 그룹 커밋

  • 20.47분 레플리케이션

    레플리케이션, GTID를 사용한 복제 관리, 멀티 소스 복제, 멀티 스레드 복제, 크래시 세이프 슬레이브, ROW 기반의 복제 기능 개선, 지연된 복제, 서버간의 복제

    책갈피 : [00:12] 리눅스에서 MariaDB 사용방법/[00:21] MariaDB 설치/[00:27] OS설정/[00:37] Passwd 설정/[00:42] 사용자계정 완료/[00:59] 리눅스에서 루트설정/[01:28] Login파일 열기/[01:36] Session required pam_limits.so 추가/[01:42] Etc/profile설정/[02:14] 리눅스 버젼확인(uname -a)/[02:34] Getcof -a 명령으로 libc버젼확인/[03:12] Mariadb-5.5.34파일 다운로드/[03:33] 리눅스버젼에 맞는지 확인후 다운로드/[03:59] Usr/local로 이동/[04:05] 다운로드파일 압축풀기/[05:03] MariaDB에 해당되는 mysql로 심볼릭링크만들기/[05:27] Vi/etc/my.cnf/[05:45] Client 설정/[05:48] Mysqld에 각용량에대한 설정/[06:02] 기본적인 데이터의 디렉토리/[06:28] 디렉토리 생성/[06:28] 오너변경/[07:08] 기본 스키마 지정/[07:56] Scripts 실행/[08:31] Boot시에mysql실행시키도록 명령/[09:18] DB구동할때 에러발생시/[09:51] Boot시 mysql실행시키도록 복사명령/[10:10] DB구동/[10:21] Failed발생시 에러파일 확인/[10:58] Buffer pool size에서 에러발생/[11:23] Innodb specific options에서 size변경/[12:13] MariaDB를 여러번 설치시 ibadta1파일이남아있는 에러/[13:33] Mysqld start 명령/[13:52] MariaDB접속시 에러확인/[14:58] 심볼릭링크 만들기/[15:21] MariaDB접속/[15:33] Show datebases;/[15:45] Use test;/[16:03] MariaDB사용시 주의사항/[16:36] 간단한 버그보기/[17:25] Max_heap_table_size, tmp_table_size/[18:42] Primary key/[19:12] 각 파티션의 데이터보기/[19:46] Show명령으로 tmp size 확인/[21:10] 변수의값 증가시키는 Set명령어/[21:49] 통계쿼리실행/[22:28] 인덱스사용시 잘못된결과 출력버그/[22:54] 테스트데이터 생성/[24:11] Insert ignore into test/[24:32] From test/[25:30] Use index(primary)/[26:21] Explain 실행계획보기/[28:29] Handlersocket/[28:46] SQL/[29:08] Parser, optimizer/[30:28] Key, value/[30:57] Handler API/[31:17] Myisam, innodb에서 동작/[32:18] Handlersocket 개발자 블로그/[32:40] Handlersocket 사용할 수 있게 설정/[33:35] Port=9998, port_wr=9999/[34:17] Install plugin/[34:38] 설치후 DB재시작/[34:46] Show processlist/[35:40] Netstat로 통해 정상적으로 실행되었는지 확인/[36:01] Hs4j로 데이터처리하는 예제/[36:27] New a client/[36:38] Open index/[36:49] Find data/[37:02] Inset data/[37:12] Update data/[37:23] Delete data/[37:30] Handlersocket 성능 결과/[38:17] Handlersocket 장점/[39:16] Memcached plugin/[39:51] Mysql 5.6 memcached plugin/[40:12] InnoDB API를 직접 호출/[40:29] 기존 Memcached로 애플리케이션 소수수정 거의 없음/[40:47] 별도의 데몬으로 동작하지 않음/[41:06] Memcached plugin 설치/[41:49] 스키마생성/[41:55] Cache_policies/[42:10] Cache_policies 설정값/[42:53] Containers/[43:00] Containers 주요필드/[44:00] Config_options/[44:08] 테이블 생성 후 Memcached 설치/[44:32] Handlersocket과 Memcached plugin 기능비교/[45:05] DAta Access방법/[45:49] Client/[46:34] Handlersocket과 Memcached plugin 장.단점 확인