More Related Content Similar to H3 2011 대형사이트 구축을 위한 MySQL 튜닝전략 Similar to H3 2011 대형사이트 구축을 위한 MySQL 튜닝전략 (20) H3 2011 대형사이트 구축을 위한 MySQL 튜닝전략1. 대형 사이트
구축을 위한
MySQL 튜닝 전략
플랫폼 개발팀 I DBA 성동찬
2. 대형 사이트 구축을 위한 MySQL 튜닝 전략
01 MySQL DBMS 특성
Nested Loop Join
Multiple Storage Engine
Data Replication
02 대형 사이트 구축 전략
서버 구성 전략
스토리지 엔진 선정 전략
인덱싱 전략
파티셔닝 전략
리플리케이션 전략
캐시 전략
03 사례
3. 01 MySQL DBMS 특성
Nested Loop Join
Multiple Storage Engine
Data Replication
4. 단일 코어, SQL처리
단일 코어, SQL처리
단순
SQL Core 1 Core 3
무거운
SQL
Outer Core 2 Core 4
(3시간)
Join
(1분)
5. Nested Loop Join
Only Nested Loop Join!
Inner Join?
Hash Outer Join?
Join
Sort
Merge
Join
Nested
Loop
Join
Sub-Query?
6. Nested Loop Join & 단일 코어, SQL처리
DW ata arehouse ?
OL T
n ine ransaction P rocessing!
7. 01 MySQL DBMS 특성
Nested Loop Join
Multiple Storage Engine
Data Replication
9. Multiple Storage Engine
대용량
처리
MyISAM Archive InnoDB
스토리지 제한 256TB None 64TB
트랜잭션 No No Yes
Locking 레벨 Table
Table Row Row
Row
인덱스 B-Tree
B-Tree NO B-Tree
B-Tree
Cache Index
Index NO Data/Index
Data/Index
파티셔닝 YES YES YES
Cluster Index No No YES
Foreign Key No No Yes
백그라운드
비고 원시 로그 수집 OLTP
로그 수집
10. Multiple Storage Engine - InnoDB
트랜잭션 + 행 단위 잠금
JOB1 TABLE JOB3
ROW01 ROW02 ROW03
ROW04 ROW05 ROW06
ROW07 ROW08 ROW09
JOB2 JOB4
11. Multiple Storage Engine - InnoDB
데이터는 Primary Key 순!!
B+ Tree
10 20 30 30 30
PK
1 9 2 3 4
data1 data1 21 data1 data1 data1
data2 data2 30 data2 data2 data2
Data
data3 data3 data1 data3 data3 data3
data4 data4 data2 data4 data4 data4
data3
data4 이동
12. Multiple Storage Engine - InnoDB
인덱스는 PK를 Value로..
10 20 30 30 30
PK
1 9 2 3 4
INDEX data1
22 data1
3 data1
100 data1
7 data1
23
data2 data2 data2 data2 data2
B+ Tree
KEY 3 7 22 23 100
20 30 10 30 30
VALUE
9 3 1 4 2
13. 01 MySQL DBMS 특성
Nested Loop Join
Multiple Storage Engine
Data Replication
17. Data Replication
슬레이브는 단일 Thread 처리
Master Slave
Session01
Database Database
Session02
Dump IO Thread SQL Thread
Session03
Binary Log Relay Log
18. 02 대형 사이트 구축 전략
서버 구성 전략
스토리지 엔진 선정 전략
인덱싱 전략
파티셔닝 전략
리플리케이션 전략
캐시 전략
19. 서버 구성 전략 - 프로세서
프로세서는 빠르게!!
Scale Up? VS Scale Out?
21. 서버 구성 전략 - 디스크
“RAID1+0”, RAID5, RAID1
Striping RAID0
Mirroring RAID1 RAID1
22. 서버 구성 전략 - 네트워크
기가 비트 NIC로 이중화
Insert
Delete NIC1
Update NIC2
Select
23. 서버 구성 전략 - 네트워크
서비스용, 내부 통신용 분리
Master Slave
Insert
Delete NIC1 NIC3 NIC5 NIC7 Select
Update NIC2 NIC4 NIC6 NIC8
Select
24. 02 대형 사이트 구축 전략
서버 구성 전략
스토리지 엔진 선정 전략
인덱싱 전략
파티셔닝 전략
리플리케이션 전략
캐시 전략
25. 스토리지 엔진 선정 전략
서비스 특성을 고려!!
트랜잭션? 로그전용?
동시처리?
스토리지 엔진 선정
26. 스토리지 엔진 선정 전략
엔진을 잘못 선정하면?
InnoDB Buffer Pool (Memory)
서
비
스
단순 LOG 데이터 데
이
터
I/O DISK
Flush
27. 스토리지 엔진 선정 전략
로그전용?
읽기전용?
동시처리?
트랜잭션? 업데이트?
INNODB MyISAM Archive
28. 02 대형 사이트 구축 전략
서버 구성 전략
스토리지 엔진 선정 전략
인덱싱 전략
파티셔닝 전략
리플리케이션 전략
캐시 전략
30. 인덱싱 전략
분포도 고려하여 “가장 적게”
1 중복된 데이터 많으면 대상 제외!
2 인덱스 많을 수록 효율은 떨어짐!!
3 인덱스도 데이터!
31. 인덱싱 전략
작은 데이터 타입으로..
1 문자열 인덱스는 최대한 회피
2 CRC32+Trigger로 대체 인덱스 구성
3 인덱스도 데이터! × ������
32. 인덱싱 전략
NULL 허용 금지!!
1 NULL 허용 시 추가 1 Byte 소요
2
인덱스도 데이터!!!
33. 02 대형 사이트 구축 전략
서버 구성 전략
스토리지 엔진 선정 전략
인덱싱 전략
파티셔닝 전략
리플리케이션 전략
캐시 전략
34. 파티셔닝 전략
파티셔닝?
Data File File01 File01
35. 파티셔닝 전략
파티셔닝 적용?
1 랜덤 PK시 Clustering 비효율 개선
2 대용량 데이터 날짜 별 관리
36. 파티셔닝 전략
주의 사항
1 Foreign key 사용 불가
2 Full-text 및 Spatial 인덱싱 사용 불가
3 파티셔닝 키는 PK안에 존재해야 함
4 조회 조건에 파티셔닝 키 포함
37. 02 대형 사이트 구축 전략
서버 구성 전략
스토리지 엔진 선정 전략
인덱싱 전략
파티셔닝 전략
리플리케이션 전략
캐시 전략
38. 리플리케이션 전략
“Async”hronous!!
1 슬레이브는 1 Thread에서만 반영
2 Master-Slave 동기화 지연 발생 가능
40. 리플리케이션 전략
세션 별 Binary Log 포멧 변경
Create
Insert
Table
into
As
Select
Select
MIXED? ROW!
42. 파티셔닝 전략
Must Primary Key!!
1 5.1.57 이전 버전 버그 존재!!
2 Binary Log가 “ROW” 시 비효율 발생!!
45. 02 대형 사이트 구축 전략
서버 구성 전략
스토리지 엔진 선정 전략
인덱싱 전략
파티셔닝 전략
리플리케이션 전략
캐시 전략
47. 캐시 전략
제약 조건
1 SQL의 Hash 값을 키로 사용
2 테이블 변경 시 연관된 캐시 전체 소멸
3 쿼리 가지 수가 많으면 비효율 발생