Skip to content

Latest commit

Β 

History

History
32 lines (22 loc) Β· 2.15 KB

File metadata and controls

32 lines (22 loc) Β· 2.15 KB

Buffer Pool

μΊμ‹œλœ DB의 데이터가 μ €μž₯λ˜μ–΄ μžˆλŠ” 곡간인 버퍼풀에 λŒ€ν•΄ μ•Œμ•„λ³΄μž.

Table of Contents

About Buffer Pool

DBμ—μ„œλ„ 데이터λ₯Ό μΊμ‹œν•΄ λ†“λŠ” 곡간이 μ‘΄μž¬ν•œλ‹€. 이λ₯Ό 버퍼풀(buffer pool) λ˜λŠ” λ²„νΌμΊμ‹œ(buffer cache) 라고 μΌμ»«λŠ”λ‹€. 여타 μΊμ‹œμ˜ κΈ°λŠ₯의 κ·ΈλŸ¬ν•˜λ“― DB의 버퍼풀 λ˜ν•œ 데이터에 μ ‘κ·Όν•˜λŠ” μ‹œκ°„μ„ 쀄여 퍼포먼슀λ₯Ό λ†’μ—¬μ€€λ‹€.

  • 데이터: ν…Œμ΄λΈ” 및 인덱슀

퍼포먼슀 ν–₯상

λŒ€λΆ€λΆ„μ˜ 경우 SQL이 느린 원인은 λ””μŠ€ν¬μ—μ„œ μ§„ν–‰λ˜λŠ” I/O λ•Œλ¬Έμ΄λ‹€. λ””μŠ€ν¬μ—μ„œ 데이터λ₯Ό μ½κ±°λ‚˜ μ“Έ λ•Œ arm(actuator arm) 을 ν†΅ν•΄μ„œ μ§„ν–‰ν•œλ‹€. μ΄λŸ¬ν•œ 물리적 λ™μž‘μœΌλ‘œ μ μ§€μ•Šμ€ μ‹œκ°„μ„ μ‚¬μš©ν•΄μ•Όν•˜κΈ°μ— λ°μ΄ν„°ν’€μ—λŠ” 자주 μ‚¬μš©λ˜λŠ” 데이터 블둝을 μ €μž₯ν•΄ λ†“λŠ”λ‹€. 찾고자 ν•˜λŠ” 블둝을 λ””μŠ€ν¬μ— μ ‘κ·Ό μ „, λ²„νΌν’€μ—μ„œ μ½λŠ” 덕뢄에 I/O μ‹œκ°„μ΄ λŒ€ν­ 쀄어든닀.

Buffer Pool List

버퍼풀에 μ €μž₯λ˜μ–΄ μžˆλŠ” μΊμ‹œλ₯Ό 효율적으둜 κ΄€λ¦¬ν•˜κΈ° μœ„ν•΄ MySQL은 블둝듀을 λ§ν¬λ“œ 리슀트둜 κ΄€λ¦¬ν•œλ‹€. 버퍼풀 리슀트의 ꡬ성은 μ•„λž˜μ˜ κ·Έλ¦Όκ³Ό κ°™λ‹€.

buffer-pool-list

An image from a MySQL

리슀트λ₯Ό 닀루기 μœ„ν•΄ MySQL μ—μ„œ μ‚¬μš©ν•˜λŠ” μ•Œκ³ λ¦¬μ¦˜μ€ LRU(Least Recently Used) 이닀. 자주 μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” λ°μ΄ν„°λŠ” λ²„νΌν’€μ—μ„œ μ œκ±°λœλ‹€.

  • add: μƒˆλ‘œμš΄ νŽ˜μ΄μ§€(a.k.a block)λŠ” 리슀트의 쀑간 지점에 μΆ”κ°€ 됨 β‡’ midpoint insertion
  • remove: 꼬리μͺ½μ— μœ„μΉ˜ν•œ νŽ˜μ΄μ§€λŠ” μ μ§„μ μœΌλ‘œ μ‚­μ œ 됨 β‡’ evicted pages