Successfully reported this slideshow.
Your SlideShare is downloading. ×

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

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Loading in …3
×

Check these out next

1 of 52 Ad
Advertisement

More Related Content

Slideshows for you (20)

Similar to H3 2011 대형사이트 구축을 위한 MySQL 튜닝전략 (20)

Advertisement

More from KTH (15)

Recently uploaded (20)

Advertisement

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

  1. 1. 대형 사이트 구축을 위한 MySQL 튜닝 전략 플랫폼 개발팀 I DBA 성동찬
  2. 2. 대형 사이트 구축을 위한 MySQL 튜닝 전략 01 MySQL DBMS 특성  Nested Loop Join  Multiple Storage Engine  Data Replication 02 대형 사이트 구축 전략  서버 구성 전략  스토리지 엔진 선정 전략  인덱싱 전략  파티셔닝 전략  리플리케이션 전략  캐시 전략 03 사례
  3. 3. 01 MySQL DBMS 특성  Nested Loop Join  Multiple Storage Engine  Data Replication
  4. 4. 단일 코어, SQL처리 단일 코어, SQL처리 단순 SQL Core 1 Core 3 무거운 SQL Outer 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 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. 10. Multiple Storage Engine - InnoDB 트랜잭션 + 행 단위 잠금 JOB1 TABLE JOB3 ROW01 ROW02 ROW03 ROW04 ROW05 ROW06 ROW07 ROW08 ROW09 JOB2 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 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. 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 로그 기반 데이터 동기화 Mixed Statement 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 RAID0 Mirroring RAID1 RAID1
  22. 22. 서버 구성 전략 - 네트워크 기가 비트 NIC로 이중화 Insert Delete NIC1 Update NIC2 Select
  23. 23. 서버 구성 전략 - 네트워크 서비스용, 내부 통신용 분리 Master Slave Insert Delete NIC1 NIC3 NIC5 NIC7 Select Update NIC2 NIC4 NIC6 NIC8 Select
  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 Type ON DEMAND OFF
  47. 47. 캐시 전략 제약 조건 1 SQL의 Hash 값을 키로 사용 2 테이블 변경 시 연관된 캐시 전체 소멸 3 쿼리 가지 수가 많으면 비효율 발생
  48. 48. 캐시 전략
  49. 49. 맺음말 1 MySQL은 단순 데이터 처리에 강한 관계형 DBMS이다!!  단일 코어에서 Nested Loop으로 SQL처리
  50. 50. 맺음말 2 MySQL에서 대용량 처리는 InnoDB가 적합하다.  트랜잭션과 행 단위 잠금으로 데이터 처리!!  InnoDB에서 Primary Key는 Cluster Index로 구성!!  추가 인덱스는 Primary Key를 Value로..
  51. 51. 맺음말 3 MySQL에서 Replication 으로 데이터를 분산 가능하다.  단일 마스터, 다중 슬레이브 구조로 디스크는 독립적  로그 기반으로 비동기적으로 데이터를 복제  슬레이브는 단일 Thread로 데이터를 반영
  52. 52. 감사합니다. 플랫폼개발실 / 공통플랫폼팀 대리 / DBA 성동찬 sdchan1@kthcorp.com @gywndi

×