DB/MySQL

[MySQL] MySQL ์•„ํ‚คํ…์ฒ˜

YeopJu 2024. 4. 1. 20:57
๋ฐ˜์‘ํ˜•

์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ MySQL์˜ ๋‚ด๋ถ€ ๊ตฌ์กฐ๋ฅผ ์ž์„ธํžˆ ๋ชจ๋ฅด๊ณ  ์žˆ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค. ํŠนํžˆ InnoDB ๋ฒ„ํผ ํ’€์ด๋ผ๋Š” ๊ณต๊ฐ„์€ ๋ฒ„ํผ์™€ ์บ์‹œ์˜ ์—ญํ• ์„ ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์•Œ๊ณ ์žˆ๋Š”๋ฐ, ๊ทธ๋ ‡๋‹ค๋ฉด ์ด ๋ถ€๋ถ„์ด ์„ฑ๋Šฅ ์ธก์ •์— ์˜ํ–ฅ์„ ์ค„ ๋ฟ๋”๋Ÿฌ, ์ฟผ๋ฆฌ ํŠน์„ฑ์— ๋”ฐ๋ผ ์ ์ ˆํžˆ ์กฐ์ ˆํ•œ๋‹ค๋ฉด ์„ฑ๋Šฅ ํ–ฅ์ƒ์— ๋„์›€์ด ๋  ์ˆ˜๋„ ์žˆ๊ฒ ๋‹ค๋ผ๋Š” ์ƒ๊ฐ์—์„œ ๊ณต๋ถ€๋ฅผ ์‹œ์ž‘ํ–ˆ๊ณ  ๊ทธ ๊ณผ์ •์—์„œ ์•Œ๊ฒŒ๋œ ๊ฒƒ๋“ค์„ ์•ž์œผ๋กœ 2~3๊ฐœ์˜ ๊ธ€์—์„œ ๋‹ค๋ค„๋ณด๊ณ ์ž ํ•œ๋‹ค.  

 


 

โ˜‘๏ธ MySQL ์•„ํ‚คํ…์ฒ˜

 

MySQL ์•„ํ‚คํ…์ฒ˜๋Š” ํฌ๊ฒŒ MySQL์—”์ง„๊ณผ ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. ์ด ๊ธ€์—์„œ ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์€ ํ˜„์žฌ MySQL์˜ ๊ธฐ๋ณธ ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์ธ InnoDB๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‹ค๋ฃฌ๋‹ค. MySQL ์—”์ง„์€ ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ์˜ ์š”์ฒญ, ์ฆ‰ ์ฟผ๋ฆฌ๋ฅผ ๋ถ„์„ํ•˜๊ณ  ์ตœ์ ํ™”ํ•˜๋Š” ์—ญํ• ์„ ํ•˜๋ฉฐ, ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์€ ์ง์ ‘ ๋””์Šคํฌ์— ์ ‘๊ทผํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ  ์“ฐ๋Š” ์ž‘์—…์„ ํ•œ๋‹ค.

MySQL ์•„ํ‚คํ…์ฒ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ตฌ์„ฑ์œผ๋กœ ๋˜์–ด์žˆ๋‹ค.

 

 

 

 

  • ์ฟผ๋ฆฌ ํŒŒ์„œ: ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ์˜ ์ฟผ๋ฆฌ์˜ ๊ธฐ๋ณธ ๋ฌธ๋ฒ•์„ ์ฒดํฌํ•˜๊ณ  ํ† ํฐ ๋‹จ์œ„๋กœ ๋ถ„๋ฆฌํ•ด ํŒŒ์„œ ํŠธ๋ฆฌ๋ฅผ ๋งŒ๋“ค์–ด๋‚ธ๋‹ค.
  • ์ „์ฒ˜๋ฆฌ๊ธฐ: ํŒŒ์„œ ํŠธ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌ์กฐ์ ์ธ ๋ฌธ์ œ์ ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. ์ด ๋‹จ๊ณ„์—์„œ ํ…Œ์ด๋ธ” ์ด๋ฆ„์ด๋‚˜ ์นผ๋Ÿผ ์ด๋ฆ„๊ณผ ๊ฐ™์€ ๊ฒƒ๋“ค์„ ๋งคํ•‘ํ•ด ํ•ด๋‹น ๊ฐ์ฒด์˜ ์กด์žฌ ์—ฌ๋ถ€์™€ ์ ‘๊ทผ ๊ถŒํ•œ์„ ํ™•์ธํ•œ๋‹ค.
  • ์˜ตํ‹ฐ๋งˆ์ด์ €: ์ฟผ๋ฆฌ์˜ ์ตœ์ ํ™”๋œ ์‹คํ–‰๊ณ„ํš์„ ์„ธ์šด๋‹ค.
  • ์‹คํ–‰ ์—”์ง„: ์‹คํ–‰ ๊ณ„ํš๋Œ€๋กœ ํ•ธ๋“ค๋Ÿฌ์—๊ฒŒ ์š”์ฒญํ•˜๋ฉฐ, ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต์„ ๋˜ ๋‹ค๋ฅธ ํ•ธ๋“ค๋Ÿฌ์˜ ์ž…๋ ฅ์œผ๋กœ ์ „๋‹ฌํ•ด์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.
  • ํ•ธ๋“ค๋Ÿฌ(์Šคํ† ๋ฆฌ์ง€ ์—”์ง„): MySQL ์—”์ง„์˜ ์š”์ฒญ์— ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ๋ฅผ ๋””์Šคํฌ์— ์ €์žฅํ•˜๊ฑฐ๋‚˜ ๋ถˆ๋Ÿฌ์˜ค๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

 

 

โ˜‘๏ธ MySQL ์Šค๋ ˆ๋“œ ๊ตฌ์กฐ

 

MySQL ์ปค๋ฎค๋‹ˆํ‹ฐ ๋ฒ„์ „์€ ์“ฐ๋ ˆ๋“œ ์บ์‹œ๋กœ ๋™์ž‘ํ•˜๊ณ , ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๋ฒ„์ „์€ ์“ฐ๋ ˆ๋“œ ํ’€์„ ์ง€์›ํ•œ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ์“ฐ๋ ˆ๋“œ ์บ์‹œ์™€ ์“ฐ๋ ˆ๋“œ ํ’€์€ ๋ฌด์Šจ ์ฐจ์ด๊ฐ€ ์žˆ์„๊นŒ? 

 

๐Ÿ’  ์“ฐ๋ ˆ๋“œ ์บ์‹œ 

  • ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•œ ์“ฐ๋ ˆ๋“œ๋Š” ์“ฐ๋ ˆ๋“œ ์บ์‹œ์— ๋ฐ˜๋‚ฉ๋œ๋‹ค. 
  • ์“ฐ๋ ˆ๋“œ ์บ์‹œ์— ์“ฐ๋ ˆ๋“œ ์บ์‹œ ์‚ฌ์ด์ฆˆ๋งŒํผ์˜ ์“ฐ๋ ˆ๋“œ๊ฐ€ ๋ณด๊ด€ ์ค‘์ผ ๋•Œ ์“ฐ๋ ˆ๋“œ๊ฐ€ ๋ฐ˜๋‚ฉ๋˜๋ฉด, ํ•ด๋‹น ์“ฐ๋ ˆ๋“œ๋Š” ์‚ญ์ œ๋œ๋‹ค. 
  • ์“ฐ๋ ˆ๋“œ ์บ์‹œ ์‚ฌ์ด์ฆˆ๊ฐ€ 10์ผ ๋•Œ, ์“ฐ๋ ˆ๋“œ ์บ์‹œ์— 10๊ฐœ์˜ ์“ฐ๋ ˆ๋“œ๊ฐ€ ๋ณด๊ด€์ค‘์ด๋ฉด์„œ ๋‹ค๋ฅธ 10๊ฐœ์˜ ์“ฐ๋ ˆ๋“œ๊ฐ€ ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค. 

๐Ÿ’  ์“ฐ๋ ˆ๋“œ ํ’€

  • ์“ฐ๋ ˆ๋“œ ํ’€ ์‚ฌ์ด์ฆˆ๋Š” MySQL ์„œ๋ฒ„์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์“ฐ๋ ˆ๋“œ ๊ฐœ์ˆ˜๋ฅผ ์˜๋ฏธํ•œ๋‹ค. (๋ณ‘๋ ฌ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์ฟผ๋ฆฌ์˜ ๊ฐœ์ˆ˜)
  • ๋ชจ๋“  ์“ฐ๋ ˆ๋“œ๊ฐ€ ์ผํ•˜๊ณ  ์žˆ์„ ๋•Œ, ์ƒˆ๋กœ์šด ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด ํ•ด๋‹น ์š”์ฒญ์€ ์ด๋ฏธ ์ฒ˜๋ฆฌ์ค‘์ธ ์š”์ฒญ์ด ๋๋‚  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค์•ผํ•œ๋‹ค.

์“ฐ๋ ˆ๋“œ ํ’€์„ ์‚ฌ์šฉํ•  ๋•Œ, ๋„ˆ๋ฌด ๋งŽ์€ ์“ฐ๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์ข‹์ง€ ์•Š๋‹ค. ํ•œ์ •๋œ CPU๋ฅผ ์Šค์ผ€์ฅด๋ง ํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์“ฐ๋ ˆ๋“œ๊ฐ€ ๋งŽ์•„์ง€๋ฉด, ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ์ด ๋งŽ์ด ๋ฐœ์ƒํ•˜์—ฌ ์˜คํžˆ๋ ค ๋น„์šฉ์ด ๋” ์ปค์งˆ ์ˆ˜ ์žˆ๋‹ค. 

 


 

 

MySQL ์Šค๋ ˆ๋“œ๋Š” ํฌ๊ทธ๋ผ์šด๋“œ ์Šค๋ ˆ๋“œ์™€ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์Šค๋ ˆ๋“œ๋กœ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๐Ÿ’  ํฌ๊ทธ๋ผ์šด๋“œ ์Šค๋ ˆ๋“œ

ํฌ๊ทธ๋ผ์šด๋“œ ์Šค๋ ˆ๋“œ๋Š” ์ตœ์†Œํ•œ MySQL ์„œ๋ฒ„์— ์ ‘์†๋œ ํด๋ผ์ด์–ธํŠธ์˜ ์ˆ˜๋งŒํผ ์กด์žฌํ•œ๋‹ค.

InnoDB ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์˜ ํฌ๊ทธ๋ผ์šด๋“œ ์Šค๋ ˆ๋“œ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ์ดํ„ฐ ๋ฒ„ํผ์™€ ์บ์‹œ์—์„œ ์ฝ์–ด์˜ค๋ฉฐ, ์ด ๊ณณ์— ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์„ ์‹œ ์ง์ ‘ ๋””์Šคํฌ์˜ ๋ฐ์ดํ„ฐ๋‚˜ ์ธ๋ฑ์Šค ํŒŒ์ผ์— ์ ‘๊ทผํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜จ๋‹ค. ์ด ์™ธ์— ๋ฒ„ํผ๋กœ๋ถ€ํ„ฐ ๋””์Šคํฌ๊นŒ์ง€ ๊ธฐ๋กํ•˜๋Š” ์ž‘์—…์€ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์Šค๋ ˆ๋“œ์—์„œ ์ฒ˜๋ฆฌํ•œ๋‹ค.

 

 

๐Ÿ’  ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์Šค๋ ˆ๋“œ

  • ๋กœ๊ทธ๋ฅผ ๋””์Šคํฌ๋กœ ๊ธฐ๋กํ•˜๋Š” ์Šค๋ ˆ๋“œ
  • InnoDB ๋ฒ„ํผ ํ’€์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋””์Šคํฌ์— ๊ธฐ๋กํ•˜๋Š” ์Šค๋ ˆ๋“œ
  • ๋ฐ์ดํ„ฐ๋ฅผ ๋ฒ„ํผ๋กœ ์ฝ์–ด์˜ค๋Š” ์Šค๋ ˆ๋“œ (ํด๋ผ์ด์–ธํŠธ ์ฟผ๋ฆฌ์— ์˜ํ•œ ์ฝ๊ธฐ๊ฐ€ ์•„๋‹Œ, Read Ahead์™€ ๊ฐ™์€ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์œ„ํ•œ ์ฝ๊ธฐ)
  • ์ธ์„œํŠธ ๋ฒ„ํผ๋ฅผ ๋ณ‘ํ•ฉํ•˜๋Š” ์Šค๋ ˆ๋“œ
  • ์ž ๊ธˆ์ด๋‚˜ ๋ฐ๋“œ๋ฝ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋Š” ์Šค๋ ˆ๋“œ

 

์—ฌ๊ธฐ์„œ ์ค‘์š”ํ•œ ๊ฒƒ์€ ๋กœ๊ทธ ์Šค๋ ˆ๋“œ์™€ ๋ฒ„ํผ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋””์Šคํฌ๋กœ ๋‚ด๋ ค์“ฐ๋Š” ์ž‘์—…์„ ํ•˜๋Š” ์“ฐ๊ธฐ ์Šค๋ ˆ๋“œ์ด๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๋Š” ์ž‘์—…์€ ์ฃผ๋กœ ํฌ๊ทธ๋ผ์šด๋“œ ์Šค๋ ˆ๋“œ์—์„œ ์ฒ˜๋ฆฌ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฑ๊ทธ๋ผ์šด๋“œ์˜ ์ฝ๊ธฐ ์Šค๋ ˆ๋“œ๋Š” ๋งŽ์ด ์„ค์ •ํ•  ํ•„์š”๊ฐ€ ์—†์ง€๋งŒ ์“ฐ๊ธฐ ์Šค๋ ˆ๋“œ๋Š” ์•„์ฃผ ๋งŽ์€ ์ž‘์—…์„ ๋ฐฑ๊ทธ๋ผ์šด๋“œ๋กœ ์ฒ˜๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ผ๋ฐ˜์ ์ธ ๋‚ด์žฅ ๋””์Šคํฌ๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ์ผ๋ฐ˜์ ์œผ๋กœ 2~4๋กœ ์„ค์ •ํ•œ๋‹ค.

 

 

 

โ˜‘๏ธ MySQL ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ

 

MySQL์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ๋Š” ๊ธ€๋กœ๋ฒŒ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ๊ณผ ๋กœ์ปฌ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์œผ๋กœ ๋‚˜๋ˆ ์ง„๋‹ค.

 

๐Ÿ’  ๊ธ€๋กœ๋ฒŒ ๋ฉ”๋ชจ๋ฆฌ

MySQL ์„œ๋ฒ„๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ์šด์˜์ฒด์ œ๋กœ๋ถ€ํ„ฐ ์„ค์ •ํ•œ ๋งŒํผ ํ• ๋‹น๋ฐ› ์˜์—ญ์ด๋ฉฐ ๋ชจ๋“  ์Šค๋ ˆ๋“œ๋กœ๋ถ€ํ„ฐ ๊ณต์œ ๋œ๋‹ค.

 

๐Ÿ’  ๋กœ์ปฌ(์„ธ์…˜) ๋ฉ”๋ชจ๋ฆฌ

ํด๋ผ์ด์–ธํŠธ ์Šค๋ ˆ๋“œ๊ฐ€ ์ฟผ๋ฆฌ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š”๋ฐ ์“ฐ์ด๋Š” ์˜์—ญ์ด๋ฉฐ ์Šค๋ ˆ๋“œ ๋ณ„๋กœ ๋…๋ฆฝ์ ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ณต์œ ๋˜์ง€ ์•Š๋Š”๋‹ค.

๋ฒ„ํผ ์ค‘ ์ปค๋„ฅ์…˜ ๋ฒ„ํผ์™€ ๊ฒฐ๊ณผ ๋ฒ„ํผ๋Š” ์ปค๋„ฅ์…˜์ด ์—ด๋ ค์žˆ๋Š” ๋™์•ˆ ๊ณ„์† ํ• ๋‹น๋œ ์ƒํƒœ๋กœ ๋‚จ์•„์žˆ์ง€๋งŒ ์กฐ์ธ ๋ฒ„ํผ์™€ ์†ŒํŠธ ๋ฒ„ํผ๋Š” ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์ˆœ๊ฐ„์—๋งŒ ํ• ๋‹นํ–ˆ๋‹ค๊ฐ€ ํ•ด์ œ๋œ๋‹ค.

 

 

 

โ˜‘๏ธ InnoDB ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„ ์•„ํ‚คํ…์ฒ˜

InnoDB๋Š” MySQL์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„ ์ค‘์—์„œ ๊ฑฐ์˜ ์œ ์ผํ•˜๊ฒŒ ๋ ˆ์ฝ”๋“œ ๊ธฐ๋ฐ˜์˜ ๋ฝ์„ ์ œ๊ณตํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ๋•Œ๋ฌธ์— ๋†’์€ ๋™์‹œ์„ฑ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ณ  ์•ˆ์ •์ ์ด๋ฉฐ ์„ฑ๋Šฅ์ด ๋›ฐ์–ด๋‚˜๋‹ค.

๊ตฌ์กฐ๋Š” ํฌ๊ฒŒ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ๊ณผ ๋””์Šคํฌ(์Šคํ† ๋ฆฌ์ง€) ์˜์—ญ์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค.

  • ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ
    • InnoDB ๋ฒ„ํผ ํ’€ : ์‹ค์ œ ๋ฐ์ดํ„ฐ ๋ธ”๋ก์„ ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌํ•˜๋Š” ์˜์—ญ + ์ธ์„œํŠธ ๋ฒ„ํผ + ์–ธ๋‘ ๋ ˆ์ฝ”๋“œ
    • ๋กœ๊ทธ ๋ฒ„ํผ : ๋กœ๊ทธ ์Šค๋ ˆ๋“œ์— ์˜ํ•ด ๋กœ๊ทธ ํŒŒ์ผ๋กœ ๊ธฐ๋ก๋˜๊ธฐ ์ „ ๋ฒ„ํผ๋ง ํ•˜๋Š” ์˜์—ญ
  • ๋””์Šคํฌ ์˜์—ญ
    • ์‹œ์Šคํ…œ ํ…Œ์ด๋ธ” ์ŠคํŽ˜์ด์Šค
    • ์‚ฌ์šฉ์ž ํ…Œ์ด๋ธ” ์ŠคํŽ˜์ด์Šค
    • ๋ฆฌ๋‘ ๋กœ๊ทธ

 

โ˜‘๏ธ InnoDB ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์˜ ํŠน์„ฑ

 

 

1๏ธโƒฃ ํ”„๋ผ์ด๋จธ๋ฆฌ ํ‚ค์— ์˜ํ•œ ํด๋Ÿฌ์Šคํ„ฐ๋ง

InnoDB์˜ ๋ชจ๋“  ํ…Œ์ด๋ธ”์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ”„๋ผ์ด๋จธ๋ฆฌ ํ‚ค๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํด๋Ÿฌ์Šคํ„ฐ๋ง๋˜์–ด ์ €์žฅ๋œ๋‹ค. ์ฆ‰, ํ”„๋ผ์ด๋จธ๋ฆฌ ํ‚ค ๊ฐ’์˜ ์ˆœ์„œ๋Œ€๋กœ ๋””์Šคํฌ์— ์ €์žฅ๋œ๋‹ค๋Š” ๋œป์ด๋ฉฐ, ์ด๋กœ ์ธํ•ด ํ”„๋ผ์ด๋จธ๋ฆฌ ํ‚ค์— ์˜ํ•œ Range Scan์€ ์ƒ๋‹นํžˆ ๋นจ๋ฆฌ ์ฒ˜๋ฆฌ ๋  ์ˆ˜ ์žˆ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ ์ฟผ๋ฆฌ์˜ ์‹คํ–‰ ๊ณ„ํš์—์„œ ํ”„๋ผ์ด๋จธ๋ฆฌ ํ‚ค๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‹ค๋ฅธ ๋ณด์กฐ ์ธ๋ฑ์Šค์— ๋น„ํ•ด ๋น„์ค‘์ด ๋†’๊ฒŒ ์„ค์ •๋œ๋‹ค.

 

2๏ธโƒฃ FK(์™ธ๋ž˜ ํ‚ค) ์ง€์›

InnoDB์—์„œ FK๋Š” ๋ถ€๋ชจ ํ…Œ์ด๋ธ” / ์ž์‹ ํ…Œ์ด๋ธ” ๋ชจ๋‘ ํ•ด๋‹น Column์— ์ธ๋ฑ์Šค ์ƒ์„ฑ์ด ํ•„์š”ํ•˜๋‹ค. 

๋ถ€๋ชจ ํ…Œ์ด๋ธ”์˜ PK ๋ณ€๊ฒฝ ์‹œ ๋ถ€๋ชจ ํ…Œ์ด๋ธ” / ์ž์‹ ํ…Œ์ด๋ธ”์— ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š”์ง€ ์ฒดํฌํ•˜๋Š” ์ž‘์—…์ด ํ•„์š”ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ”๋กœ Lock์ด ์ „ํŒŒ๋  ์ˆ˜ ์žˆ๊ณ , ์ด์— ๋”ฐ๋ผ DB์—์„œ ๋ฐ๋“œ๋ฝ์ด ๋งŽ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. 

์ด๋ฅผ ์œ„ํ•ด foreign_key_checks ์˜ต์…˜์ด ์„ค์ • ๊ฐ€๋Šฅํ•˜๋‹ค.

 

3๏ธโƒฃ ์ž ๊ธˆ์ด ํ•„์š”์—†๋Š” ์ผ๊ด€๋œ ์ฝ๊ธฐ(Non-locking consistent read)

InnoDB ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์€ MVCC๋ฅผ ์ด์šฉํ•ด ๋ฝ์„ ๊ฑธ์ง€ ์•Š๊ณ  ์ฝ๊ธฐ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ๋ฝ์„ ๊ฑธ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— InnoDB์—์„œ ์ฝ๊ธฐ ์ž‘์—…์€ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฝ์„ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ์ฝ๊ธฐ ์ž‘์—…์ด ๊ฐ€๋Šฅํ•˜๋‹ค(SERIALIZABLE ๊ฒฉ๋ฆฌ ์ˆ˜์ค€ ์ œ์™ธ)

 

4๏ธโƒฃ ์ž๋™ ๋ฐ๋“œ๋ฝ ๊ฐ์ง€

InnoDB๋Š” ๋ฝ ๋Œ€๊ธฐ ๋ชฉ๋ก์„ ๊ทธ๋ž˜ํ”„ ํ˜•ํƒœ๋กœ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ๋งŒ์•ฝ ๋ฐ๋“œ๋ฝ์ด ๋ฐœ์ƒํ•œ๋‹ค๋ฉด ์ž๋™์ ์œผ๋กœ ๊ฐ์ง€๋˜๊ณ  ๊ฐ์ง€๋œ ๋ฐ๋“œ๋ฝ์€ ๊ด€๋ จ ํŠธ๋žœ์žญ์…˜ ์ค‘์—์„œ ROLLBACK์ด ๊ฐ€์žฅ ์šฉ์ดํ•œ ํŠธ๋žœ์žญ์…˜(๊ฐ€์žฅ ์ ์€ UNDO ๋กœ๊ทธ๋ฅผ ๊ฐ€์ง„ ํŠธ๋žœ์žญ์…˜)์„ ์ž๋™์ ์œผ๋กœ ๊ฐ•์ œ ์ข…๋ฃŒํ•œ๋‹ค.

๋ฐ๋“œ๋ฝ ๊ฐ์ง€ ์Šค๋ ˆ๋“œ๋Š” ์ž ๊ธˆ ๋ชฉ๋ก์„ ๊ฒ€์‚ฌํ•  ๋•Œ ์ƒํƒœ๊ฐ€ ๋ณ€ํ•˜์ง€ ์•Š๋„๋ก ์ž ๊ธˆ ๋Œ€๊ธฐ ๋ชฉ๋ก์— ๋ฝ์„ ๊ฑธ์–ด๋‘๊ณ  ๊ฒ€์‚ฌํ•œ๋‹ค.

 

 

โ˜‘๏ธ InnoDB ๋ฒ„ํผ ํ’€๊ณผ ๋ฆฌ๋‘ ๋กœ๊ทธ

InnoDB ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์—์„œ ๊ฐ€์žฅ ํ•ต์‹ฌ์ ์ธ ๋ถ€๋ถ„์œผ๋กœ, ๋””์Šคํฌ์˜ ๋ฐ์ดํ„ฐ ํŒŒ์ผ์ด๋‚˜ ์ธ๋ฑ์Šค ์ •๋ณด๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์บ์‹œํ•ด ๋‘๋Š” ๊ณต๊ฐ„์ด๋‹ค. ์“ฐ๊ธฐ ์ž‘์—…์„ ์ง€์—ฐ์‹œ์ผœ ์ผ๊ด„ ์ž‘์—…์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๋ฒ„ํผ ์—ญํ• ๋„ ๊ฐ™์ดํ•œ๋‹ค. ๋ฒ„ํผ ํ’€์— ๋Œ€ํ•ด์„œ๋Š” ๋‹ค์Œ ๊ธ€์—์„œ ์ž์„ธํžˆ ๋‹ค๋ฃฐ ์˜ˆ์ •์ด๋‹ค.

๋ฐ˜์‘ํ˜•