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