H3 2011 대형사이트 구축을 위한 MySQL 튜닝전략

12,441 views
11,841 views

Published on

Published in: Technology
1 Comment
61 Likes
Statistics
Notes
  • 많은 도움이 되었습니다. 감사합니다.^^
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total views
12,441
On SlideShare
0
From Embeds
0
Number of Embeds
1,865
Actions
Shares
0
Downloads
375
Comments
1
Likes
61
Embeds 0
No embeds

No notes for slide

H3 2011 대형사이트 구축을 위한 MySQL 튜닝전략

  1. 1. 대형 사이트 구축을 위한MySQL 튜닝 전략플랫폼 개발팀 I DBA 성동찬
  2. 2. 대형 사이트 구축을 위한 MySQL 튜닝 전략01 MySQL DBMS 특성  Nested Loop Join  Multiple Storage Engine  Data Replication02 대형 사이트 구축 전략  서버 구성 전략  스토리지 엔진 선정 전략  인덱싱 전략  파티셔닝 전략  리플리케이션 전략  캐시 전략03 사례
  3. 3. 01 MySQL DBMS 특성  Nested Loop Join  Multiple Storage Engine  Data Replication
  4. 4. 단일 코어, SQL처리 단일 코어, SQL처리단순SQL Core 1 Core 3 무거운 SQLOuter Core 2 Core 4 (3시간) Join(1분)
  5. 5. Nested Loop Join Only Nested Loop Join!Inner Join? Hash Outer Join? Join Sort Merge Join Nested Loop Join Sub-Query?
  6. 6. Nested Loop Join & 단일 코어, SQL처리 DW ata arehouse ?OL T n ine ransaction P rocessing!
  7. 7. 01 MySQL DBMS 특성  Nested Loop Join  Multiple Storage Engine  Data Replication
  8. 8. Multiple Storage Engine다양한 스토리지 엔진 Federated MyISAM 3rd Engine InnoDB Memory NDB Archive
  9. 9. Multiple Storage Engine 대용량 처리 MyISAM Archive InnoDB스토리지 제한 256TB None 64TB 트랜잭션 No No YesLocking 레벨 Table Table Row Row Row 인덱스 B-Tree B-Tree NO B-Tree B-Tree Cache Index Index NO Data/Index Data/Index 파티셔닝 YES YES YESCluster Index No No YESForeign Key No No Yes 백그라운드 비고 원시 로그 수집 OLTP 로그 수집
  10. 10. Multiple Storage Engine - InnoDB트랜잭션 + 행 단위 잠금JOB1 TABLE JOB3 ROW01 ROW02 ROW03 ROW04 ROW05 ROW06 ROW07 ROW08 ROW09JOB2 JOB4
  11. 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. 12. Multiple Storage Engine - InnoDB 인덱스는 PK를 Value로.. 10 20 30 30 30 PK 1 9 2 3 4INDEX data1 22 data1 3 data1 100 data1 7 data1 23 data2 data2 data2 data2 data2B+ Tree KEY 3 7 22 23 100 20 30 10 30 30VALUE 9 3 1 4 2
  13. 13. 01 MySQL DBMS 특성  Nested Loop Join  Multiple Storage Engine  Data Replication
  14. 14. Data Replication“1” 마스터, “다중” 슬레이브 Active!! 데이터 변경 Passive!!
  15. 15. Data Replication 디스크는 물리적으로 독립MySQL Replication Oracle RAC 공유 스토리지 VS
  16. 16. Data Replication로그 기반 데이터 동기화 MixedStatement Row Asynchronous Replication
  17. 17. Data Replication슬레이브는 단일 Thread 처리 Master Slave Session01 Database Database Session02 Dump IO Thread SQL Thread Session03 Binary Log Relay Log
  18. 18. 02 대형 사이트 구축 전략  서버 구성 전략  스토리지 엔진 선정 전략  인덱싱 전략  파티셔닝 전략  리플리케이션 전략  캐시 전략
  19. 19. 서버 구성 전략 - 프로세서 프로세서는 빠르게!!Scale Up? VS Scale Out?
  20. 20. 서버 구성 전략 - 메모리메모리는 최대한 크게!!
  21. 21. 서버 구성 전략 - 디스크“RAID1+0”, RAID5, RAID1 Striping RAID0Mirroring RAID1 RAID1
  22. 22. 서버 구성 전략 - 네트워크 기가 비트 NIC로 이중화InsertDelete NIC1Update NIC2Select
  23. 23. 서버 구성 전략 - 네트워크 서비스용, 내부 통신용 분리 Master SlaveInsertDelete NIC1 NIC3 NIC5 NIC7 SelectUpdate NIC2 NIC4 NIC6 NIC8Select
  24. 24. 02 대형 사이트 구축 전략  서버 구성 전략  스토리지 엔진 선정 전략  인덱싱 전략  파티셔닝 전략  리플리케이션 전략  캐시 전략
  25. 25. 스토리지 엔진 선정 전략서비스 특성을 고려!! 트랜잭션? 로그전용? 동시처리? 스토리지 엔진 선정
  26. 26. 스토리지 엔진 선정 전략 엔진을 잘못 선정하면?InnoDB Buffer Pool (Memory) 서 비 스 단순 LOG 데이터 데 이 터 I/O DISK Flush
  27. 27. 스토리지 엔진 선정 전략 로그전용? 읽기전용? 동시처리? 트랜잭션? 업데이트?INNODB MyISAM Archive
  28. 28. 02 대형 사이트 구축 전략  서버 구성 전략  스토리지 엔진 선정 전략  인덱싱 전략  파티셔닝 전략  리플리케이션 전략  캐시 전략
  29. 29. 인덱싱 전략인덱스는 많을 수록 무조건 좋다??
  30. 30. 인덱싱 전략분포도 고려하여 “가장 적게”1 중복된 데이터 많으면 대상 제외!2 인덱스 많을 수록 효율은 떨어짐!!3 인덱스도 데이터!
  31. 31. 인덱싱 전략 작은 데이터 타입으로..1 문자열 인덱스는 최대한 회피2 CRC32+Trigger로 대체 인덱스 구성3 인덱스도 데이터! ×
  32. 32. 인덱싱 전략 NULL 허용 금지!!1 NULL 허용 시 추가 1 Byte 소요2 인덱스도 데이터!!!
  33. 33. 02 대형 사이트 구축 전략  서버 구성 전략  스토리지 엔진 선정 전략  인덱싱 전략  파티셔닝 전략  리플리케이션 전략  캐시 전략
  34. 34. 파티셔닝 전략 파티셔닝?Data File File01 File01
  35. 35. 파티셔닝 전략 파티셔닝 적용?1 랜덤 PK시 Clustering 비효율 개선2 대용량 데이터 날짜 별 관리
  36. 36. 파티셔닝 전략 주의 사항1 Foreign key 사용 불가2 Full-text 및 Spatial 인덱싱 사용 불가3 파티셔닝 키는 PK안에 존재해야 함4 조회 조건에 파티셔닝 키 포함
  37. 37. 02 대형 사이트 구축 전략  서버 구성 전략  스토리지 엔진 선정 전략  인덱싱 전략  파티셔닝 전략  리플리케이션 전략  캐시 전략
  38. 38. 리플리케이션 전략 “Async”hronous!!1 슬레이브는 1 Thread에서만 반영2 Master-Slave 동기화 지연 발생 가능
  39. 39. 리플리케이션 전략동기화 지연 발생 원인 DB 무거운 버그 SQL 과도한 에러 트래픽
  40. 40. 리플리케이션 전략세션 별 Binary Log 포멧 변경 Create Insert Table into As Select Select MIXED? ROW!
  41. 41. 리플리케이션 전략동기화 지연 발생 원인 DB 무거운 버그 SQL 과도한 에러 트래픽
  42. 42. 파티셔닝 전략 Must Primary Key!!1 5.1.57 이전 버전 버그 존재!!2 Binary Log가 “ROW” 시 비효율 발생!!
  43. 43. 리플리케이션 전략특정 DB만 동기화 전략! user log M service A S1 S3 S2 user service A log
  44. 44. 리플리케이션 전략슬레이브를 고 스펙으로!!
  45. 45. 02 대형 사이트 구축 전략  서버 구성 전략  스토리지 엔진 선정 전략  인덱싱 전략  파티셔닝 전략  리플리케이션 전략  캐시 전략
  46. 46. 캐시 전략서비스 특성을 고려!! Query Cache TypeON DEMAND OFF
  47. 47. 캐시 전략 제약 조건1 SQL의 Hash 값을 키로 사용2 테이블 변경 시 연관된 캐시 전체 소멸3 쿼리 가지 수가 많으면 비효율 발생
  48. 48. 캐시 전략
  49. 49. 맺음말1MySQL은단순 데이터 처리에 강한관계형 DBMS이다!! 단일 코어에서 Nested Loop으로 SQL처리
  50. 50. 맺음말2MySQL에서대용량 처리는InnoDB가 적합하다. 트랜잭션과 행 단위 잠금으로 데이터 처리!! InnoDB에서 Primary Key는 Cluster Index로 구성!! 추가 인덱스는 Primary Key를 Value로..
  51. 51. 맺음말3MySQL에서Replication 으로데이터를 분산 가능하다. 단일 마스터, 다중 슬레이브 구조로 디스크는 독립적 로그 기반으로 비동기적으로 데이터를 복제 슬레이브는 단일 Thread로 데이터를 반영
  52. 52. 감사합니다.플랫폼개발실 / 공통플랫폼팀 대리 / DBA 성동찬 sdchan1@kthcorp.com @gywndi

×