4️⃣

챕터 04 뢄산을 κ³ λ €ν•œ MySQL 운용

μ„Έ κ°€μ§€ 포인트!
 

1. OS μΊμ‹œ ν™œμš© - Table 섀계 잘 ν•˜μž!

  • 데이터가 λ§Žμ•„μ§ˆ 수둝 λŒ€μΆ©μ •μ˜ν•œ ν•œ column 이 κ°€μ§€λŠ” μš©λŸ‰μ€ μ–΄λ§ˆμ–΄λ§ˆ ν•΄μ§„λ‹€.
    • varchar(20)이면 μΆ©λΆ„ν•œ column 에 varchar(256)을 μ μš©ν•˜μ§€ 말자!
  • ν…Œμ΄λΈ”μ˜ μ •κ·œν™”!
    • μΏΌλ¦¬μ‹œ join 에 λ”°λ₯Έ μ„±λŠ₯ ν•˜λ½κ³Ό 데이터 μΈ‘λ©΄μ—μ„œμ˜ μ •κ·œν™”λ₯Ό 잘 μ €μšΈμ§ˆ ν•˜μž
 

2. 인덱슀의 μ€‘μš”μ„±

  • 인덱슀 = 색인
  • 탐색 μ„±λŠ₯을 높이기 μœ„ν•΄ μ μš©ν•˜λŠ” 자료ꡬ쑰
  • MySQL 의 μΈλ±μŠ€λŠ” 기본적으둜 B+ 트리λ₯Ό ν™œμš©ν•œλ‹€
자료ꡬ쑰 B-Tree, B+Tree
자료ꡬ쑰 B-Tree, B+Tree
ex) 데이터 4,000만 건 ν…Œμ΄λΈ” μ—μ„œμ˜ 탐색
  • 인덱슀 μ—†μŒ -> μ„ ν˜•νƒμƒ‰ Full Table Scan = O(n). μ΅œλŒ€ 4,000만번 탐색
  • 인덱슀 있음 -> B트리둜 이뢄탐색 = O(n) μ΅œλŒ€ 25.25번 탐색
 
  • 쿼리에 λŒ€ν•΄ μΈλ±μŠ€κ°€ λ™μž‘ν•˜λŠ”μ§€ explain λͺ…λ Ήμ–΄λ‘œ 확인 ν•  수 μžˆλ‹€.
  • 볡수 μΉΌλŸΌμ„ λ™μ‹œμ— index λ₯Ό νƒœμš°κ³ μž ν•  κ²½μš°μ—λŠ” 볡합 인덱슀λ₯Ό μ‚¬μš©ν•΄μ•Ό ν•œλ‹€.
 

3. ν™•μž₯을 μ „μ œλ‘œν•œ μ‹œμŠ€ν…œ 섀계

이전 μ±•ν„°μ˜ λ§ˆμ§€λ§‰ κ°•μ˜μ—μ„œ μ‚΄νŽ΄λ³Έ κ΅­μ†Œμ„±μ„ μ‚΄λ¦¬λŠ” 뢄산은 κ²°κ΅­ DB κ³„μΈ΅μ—μ„œλŠ” DB νŒŒν‹°μ…”λ‹μ„ μ˜λ―Έν•œλ‹€.
μ„€κ³„μ‹œ DB 계측 뿐만 μ•„λ‹ˆλΌ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ κ³„μΈ΅μ—μ„œλ„ DB의 ν™•μž₯성을 κ³ λ €ν•  ν•„μš”κ°€ μžˆλ‹€.
 

λ§ˆμŠ€ν„°/슬레이브 (DB Clustering) λ°©μ‹μ˜ νŠΉμ§•

  • μŠ¬λ ˆμ΄λΈŒλŠ” ν™•μž₯ - 참쑰계열 쿼리
  • λ§ˆμŠ€ν„°λŠ” ν™•μž₯ν•˜μ§€ μ•ŠλŠ”λ‹€
    • 갱신계열 쿼리
 

Join 배제

  • Table 이 μ„œλ‘œλ₯Ό 직접 μ°Έμ‘°ν•˜λŠ” Join μΏΌλ¦¬λŠ” ν™•μž₯에 μœ μ—°ν•˜μ§€ λͺ»ν•˜λ‹€.
  • Where In 절둜 λ‚˜λˆ„μ–΄ μ²˜λ¦¬ν•˜λŠ” 것이 ν™•μž₯μ—λŠ” μœ μ—°ν•˜λ‹€