Top Banner
# ENTAZ # DB팀 이영훈 What is My SQL ? What is My SQL ?
29

1 mysql아키텍쳐 v1

Jul 14, 2015

Download

Technology

resoliwan
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 1 mysql아키텍쳐 v1

# ENTAZ# DB팀 이영훈

What is My SQL ?

What is My SQL ?

Page 2: 1 mysql아키텍쳐 v1

@ 강의소개

# 아키텍처 LVL 1# 트랜잭션 & 잠금 LVL 1# 인덱스 LVL 1# 쿼리최적화 작성 LVL 1# 데이터모델링 LVL 2# 파티션 & 데이터타입 LVL 2# 실행계획 및 튜닝 LVL 2~3

What is My SQL ?

Page 3: 1 mysql아키텍쳐 v1

01 MySQL 아키텍쳐

# My SQL DB 오버뷰 # InnoDB 엔진 특징# MyISAM 엔진 특징

What is My SQL ?

Page 4: 1 mysql아키텍쳐 v1

# My SQL DB 오버뷰

What is My SQL ?

My SQL 서버(DB)가 하는 일은 멀까요?

Page 5: 1 mysql아키텍쳐 v1

# My SQL DB 오버뷰

What is My SQL ?

1.MySQL 엔진

2.스토리지 엔진

My SQL 서버(DB) = MySQL엔진 + 스토리지 엔진

처리리턴

Page 6: 1 mysql아키텍쳐 v1

1. 클라이언트에서 MySQL에 접속 (ODBC 컨넥터를 통해 DB 와 통신)2. 쿼리 파싱-> 쿼리 트리-> 최적화-> 실행3. 스토리지엔진 에게 데이터 조작 명령3. 스토리지 엔진이 돌려준 결과를 클라이언트로 return

What is My SQL ?

# My SQL 사용과정

1.MySQL 엔진

2.스토리지 엔진

2

1

Page 7: 1 mysql아키텍쳐 v1

# My SQL 엔진

What is My SQL ?

# Connection Pool# SQL Interface# Parser# Optimizer# Caches & buffer

Page 8: 1 mysql아키텍쳐 v1

# PARSER기본 문장 SELECT A, B, C FROM OBJ_POOL WHERE A = 45 AND ...

What is My SQL ?

Page 9: 1 mysql아키텍쳐 v1

# 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

Page 10: 1 mysql아키텍쳐 v1

# mysql 엔진 요약

What is My SQL ?

# Connection Pool 컨넥션 관리하는 애# SQL Interface Sql 명령어 이해하는 애 # Parser Text 를 자료 구조로 만드는애(문법,권한 체크) # Optimizer 가장 빠른 query plan 선택하는애# Caches & buffer 어떻게든 빠르게 할려고 도움주는 애

Page 11: 1 mysql아키텍쳐 v1

# 쿼리 실행 순서

What is My SQL ?

1 Connection Pool2 Parser3 Optimizer# Caches & buffer

1

2

3

Page 12: 1 mysql아키텍쳐 v1

# 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 = ? ? 에 값을 변경할때

Page 13: 1 mysql아키텍쳐 v1

# My SQL 엔진?

What is My SQL ?

# 클라이언트로부터의 접속 및 쿼리 요청을 하는 커넥션 핸들러와 Sql 파서 및 전처리기, 그리고 쿼리의 최적화된 실행을 위한 옵티마이저가 중심을 이룬다 또한 성능 향상을 위해 캐쉬나 버퍼를 사용한다.

# 연결을 받아 가장 빠른게 처리할 수 있는 방법을 찾아서 스토리지 엔진한태 처리하라고 한다.

Page 14: 1 mysql아키텍쳐 v1

# My SQL DB 오버뷰

What is My SQL ?

1.MySQL 엔진

2.스토리지 엔진

My SQL 서버(DB) = MySQL엔진 + 스토리지 엔진

처리리턴

Page 15: 1 mysql아키텍쳐 v1

# 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

논리적

물리적명령

Page 16: 1 mysql아키텍쳐 v1

# Storage 엔진의 종류

# 디비 하면 생각 나는것? 트랜잭션 동시성 컨트롤 빠른속도

# 트랜잭션을 지원한다? 당연이 속도가 느려짐니다.

# 그래? 그럼 trade-off 걱정말고 각자 할 일만 하자!

What is My SQL ?

Page 17: 1 mysql아키텍쳐 v1

# 자주 쓰는 storage engineWhat is My SQL ?

InnoDB MyISAM Archive

트랜잭션 지원 X X

락 레벨 로우(인덱스락) 테이블 로우

인덱스 지원 지원 X

캐쉬 데이터/인덱스 X 인덱스

파티셔닝 지원 지원 지원

클러스터 인덱스 디폴트 X X

사용용도 OLTP 로그수집 원시로그수집

Page 18: 1 mysql아키텍쳐 v1

# locking levelWhat is My SQL ?

LOCK

TABLETABLE lock

ROCK2.ROW 3.ROW 4.ROW 5.ROW 6.ROW

TABLE lock Row lock

Page 19: 1 mysql아키텍쳐 v1

# 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

Page 20: 1 mysql아키텍쳐 v1

# 자주 쓰는 storage engineWhat is My SQL ?

InnoDB MyISAM Archive

트랜잭션 지원 X X

락 레벨 로우(인덱스락) 테이블 로우

인덱스 지원 지원 X

캐쉬 데이터/인덱스 X 인덱스

파티셔닝 지원 지원 지원

클러스터 인덱스 디폴트 X X

사용용도 OLTP 로그수집 원시로그수집

Page 21: 1 mysql아키텍쳐 v1

# Cache

What is My SQL ?

Page 22: 1 mysql아키텍쳐 v1

# Cache IN Hard ware view

What is My SQL ?

CPU RAM HDD

CACHE

HDD

RAM

속도 : 빨라짐가격 : 증가함저장량 : 적어짐

속도 : 느려짐가격 : 내려감저장량 : 많아짐

Page 23: 1 mysql아키텍쳐 v1

# MYISAM ENGINEWhat is My SQL ?

MySQL엔진

Key cache

운영체제 시스템케시 / 버퍼

데이터 파일

인덱스 파일

메모리 영역

운영체제 캐쉬 영역

디스크 스토리지 영역

처리

MYISAM ENGINE

INSERT 사전 INTO 단어인덱스, 단어명, 뜻 VALUES('A','apple','사과');

Page 24: 1 mysql아키텍쳐 v1

# Memory Hard ware view

What is My SQL ?

MYISAM사전 : 파일명 사전.frm

OS파일명 사전.frm : 하드웨어 주소 입니다.

Page 25: 1 mysql아키텍쳐 v1

# HDD Hard ware view

What is My SQL ?

Page 26: 1 mysql아키텍쳐 v1

# HDD Hard ware view

What is My SQL ?

2.번 블락 3.번 블락4.번 블락5.번 블락6.번 블락

1.번 블락

2.번 레코드

3.번 레코드

1.번 레코드

1 번섹터1 번섹터

EMP TABLE

Page 27: 1 mysql아키텍쳐 v1

# 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번 레코드

Page 28: 1 mysql아키텍쳐 v1

# 자주 쓰는 storage engineWhat is My SQL ?

InnoDB MyISAM Archive

트랜잭션 지원 X X

락 레벨 로우(인덱스락) 테이블 로우

인덱스 지원 지원 X

캐쉬 데이터/인덱스 X 인덱스

파티셔닝 지원 지원 지원

클러스터 인덱스 디폴트 X X

사용용도 OLTP 로그수집 원시로그수집

Page 29: 1 mysql아키텍쳐 v1

# My SQL DB 오버뷰

What is My SQL ?

My SQL 서버(DB)가 하는 일은 멀까요?