# ENTAZ # DB팀 이영훈 What is My SQL ? What is My SQL ?
# ENTAZ# DB팀 이영훈
What is My SQL ?
What is My SQL ?
@ 강의소개
# 아키텍처 LVL 1# 트랜잭션 & 잠금 LVL 1# 인덱스 LVL 1# 쿼리최적화 작성 LVL 1# 데이터모델링 LVL 2# 파티션 & 데이터타입 LVL 2# 실행계획 및 튜닝 LVL 2~3
What is My SQL ?
01 MySQL 아키텍쳐
# My SQL DB 오버뷰 # InnoDB 엔진 특징# MyISAM 엔진 특징
What is My SQL ?
# My SQL DB 오버뷰
What is My SQL ?
My SQL 서버(DB)가 하는 일은 멀까요?
# My SQL DB 오버뷰
What is My SQL ?
1.MySQL 엔진
2.스토리지 엔진
My SQL 서버(DB) = MySQL엔진 + 스토리지 엔진
처리리턴
1. 클라이언트에서 MySQL에 접속 (ODBC 컨넥터를 통해 DB 와 통신)2. 쿼리 파싱-> 쿼리 트리-> 최적화-> 실행3. 스토리지엔진 에게 데이터 조작 명령3. 스토리지 엔진이 돌려준 결과를 클라이언트로 return
What is My SQL ?
# My SQL 사용과정
1.MySQL 엔진
2.스토리지 엔진
2
1
# My SQL 엔진
What is My SQL ?
# Connection Pool# SQL Interface# Parser# Optimizer# Caches & buffer
# PARSER기본 문장 SELECT A, B, C FROM OBJ_POOL WHERE A = 45 AND ...
What is My SQL ?
# Optimizer기본 문장 SELECT sum(sal) FROM emp A, dept BWHERE A.dept_id = B.dept_id AND B.dept_name = ‘DB팀’
What is My SQL ?
1. emp 를 dept_id 로 group by 해서 sal을 sum 한 후 Emp 와 dept 를 조인하여 dept_name 이 ‘DB팀’ 만 결과 노출
2.dept 에서 ‘DB팀’을 찾은 후 dept_id 를 가지고 emp 에서 필터링 후 해당 결과를 sum
# mysql 엔진 요약
What is My SQL ?
# Connection Pool 컨넥션 관리하는 애# SQL Interface Sql 명령어 이해하는 애 # Parser Text 를 자료 구조로 만드는애(문법,권한 체크) # Optimizer 가장 빠른 query plan 선택하는애# Caches & buffer 어떻게든 빠르게 할려고 도움주는 애
# 쿼리 실행 순서
What is My SQL ?
1 Connection Pool2 Parser3 Optimizer# Caches & buffer
1
2
3
# Optimizer
Soft parsing VS hard parsing
What is My SQL ?
머지? 먹는건가?
Soft pasing is good! ex) prepare statement,Insert A values(1),(2),(3),(4),(5)SELECT a FROM emp
Q) 1.SELECT A FROM emp WHERE A= ‘1’ select A from emp where A= ‘1’
2.SELECT A FROM emp WHERE A = ? ? 에 값을 변경할때
# My SQL 엔진?
What is My SQL ?
# 클라이언트로부터의 접속 및 쿼리 요청을 하는 커넥션 핸들러와 Sql 파서 및 전처리기, 그리고 쿼리의 최적화된 실행을 위한 옵티마이저가 중심을 이룬다 또한 성능 향상을 위해 캐쉬나 버퍼를 사용한다.
# 연결을 받아 가장 빠른게 처리할 수 있는 방법을 찾아서 스토리지 엔진한태 처리하라고 한다.
# My SQL DB 오버뷰
What is My SQL ?
1.MySQL 엔진
2.스토리지 엔진
My SQL 서버(DB) = MySQL엔진 + 스토리지 엔진
처리리턴
# Storage engine 정한적 없는대?
What is My SQL ?
1.MySQL 엔진
2.스토리지 엔진
CREATE TABLE emp ( user_id INT NOT NULL ,....)ENGINE = InnoDB
SELECT * FROM emp
HARD DISK OR MEMORY
논리적
물리적명령
# Storage 엔진의 종류
# 디비 하면 생각 나는것? 트랜잭션 동시성 컨트롤 빠른속도
# 트랜잭션을 지원한다? 당연이 속도가 느려짐니다.
# 그래? 그럼 trade-off 걱정말고 각자 할 일만 하자!
What is My SQL ?
# 자주 쓰는 storage engineWhat is My SQL ?
InnoDB MyISAM Archive
트랜잭션 지원 X X
락 레벨 로우(인덱스락) 테이블 로우
인덱스 지원 지원 X
캐쉬 데이터/인덱스 X 인덱스
파티셔닝 지원 지원 지원
클러스터 인덱스 디폴트 X X
사용용도 OLTP 로그수집 원시로그수집
# locking levelWhat is My SQL ?
LOCK
TABLETABLE lock
ROCK2.ROW 3.ROW 4.ROW 5.ROW 6.ROW
TABLE lock Row lock
# locking levelWhat is My SQL ?
1.ROW 2.ROW 3.ROW 4.ROW 5.ROW 6.ROW
TABLE
클라 2
클라 1
동시에 동일 테이블의 다른 로우를 수정할려고 한다면?
UPDATE ROW2
TABLE
UPDATE ROW1
# 자주 쓰는 storage engineWhat is My SQL ?
InnoDB MyISAM Archive
트랜잭션 지원 X X
락 레벨 로우(인덱스락) 테이블 로우
인덱스 지원 지원 X
캐쉬 데이터/인덱스 X 인덱스
파티셔닝 지원 지원 지원
클러스터 인덱스 디폴트 X X
사용용도 OLTP 로그수집 원시로그수집
# Cache
What is My SQL ?
# Cache IN Hard ware view
What is My SQL ?
CPU RAM HDD
CACHE
HDD
RAM
속도 : 빨라짐가격 : 증가함저장량 : 적어짐
속도 : 느려짐가격 : 내려감저장량 : 많아짐
# MYISAM ENGINEWhat is My SQL ?
MySQL엔진
Key cache
운영체제 시스템케시 / 버퍼
데이터 파일
인덱스 파일
메모리 영역
운영체제 캐쉬 영역
디스크 스토리지 영역
처리
MYISAM ENGINE
INSERT 사전 INTO 단어인덱스, 단어명, 뜻 VALUES('A','apple','사과');
# Memory Hard ware view
What is My SQL ?
MYISAM사전 : 파일명 사전.frm
OS파일명 사전.frm : 하드웨어 주소 입니다.
# HDD Hard ware view
What is My SQL ?
# HDD Hard ware view
What is My SQL ?
2.번 블락 3.번 블락4.번 블락5.번 블락6.번 블락
1.번 블락
2.번 레코드
3.번 레코드
1.번 레코드
1 번섹터1 번섹터
EMP TABLE
# MYISAM ENGINEWhat is My SQL ?
MySQL엔진
Key cache
운영체제 시스템케시 / 버퍼
데이터 파일
인덱스 파일
메모리 영역
운영체제 캐쉬 영역
디스크 스토리지 영역
처리
MYISAM ENGINE
INSERT 사전 INTO 단어인덱스, 단어명, 뜻 VALUES('A','apple','사과');
MYISAM : 사전 테이블 : 사전 파일.FRM
운영체제 : 사전.FRM : 1번 플래터 1번 섹터 부터 시작
MYISAM : apple : 1번 플래터 3번 섹터 4번 레코드
# 자주 쓰는 storage engineWhat is My SQL ?
InnoDB MyISAM Archive
트랜잭션 지원 X X
락 레벨 로우(인덱스락) 테이블 로우
인덱스 지원 지원 X
캐쉬 데이터/인덱스 X 인덱스
파티셔닝 지원 지원 지원
클러스터 인덱스 디폴트 X X
사용용도 OLTP 로그수집 원시로그수집
# My SQL DB 오버뷰
What is My SQL ?
My SQL 서버(DB)가 하는 일은 멀까요?