Post

๐Ÿฆค MySQL ์‹ฌํ™” โ…  - ์ฟผ๋ฆฌ ์‘๋‹ต ์‹œ๊ฐ„

๐Ÿฆค MySQL ์‹ฌํ™” โ…  - ์ฟผ๋ฆฌ ์‘๋‹ต ์‹œ๊ฐ„

๐Ÿ“– ใ€ŽMYSQL์„ ๋” ๋น ๋ฅด๊ฒŒ, ์„ฑ๋Šฅ ์ตœ์ ํ™” ์„ ํƒ๊ณผ ์ง‘์ค‘ใ€์„ ์ฝ๊ณ  ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.

๊ฐœ์š”

โ€œ์„ฑ๋Šฅ์€ ๊ณง ์ฟผ๋ฆฌ ์‘๋‹ต ์‹œ๊ฐ„์ด๋‹ค.โ€

  • ์ด ์ฑ…์˜ ๋ชฉ์ ์€ MySQL ์„ฑ๋Šฅ์„ ํ˜„์ €ํ•˜๊ฒŒ ๊ฐœ์„ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
  • MySQL ์„ฑ๋Šฅ ์š”์†Œ๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€๊ฐ€ ์กด์žฌํ•˜๋ฉฐ, ๊ทธ์ค‘ ์ฟผ๋ฆฌ ์‘๋‹ต ์‹œ๊ฐ„์„ ๋จผ์ € ์‚ดํŽด๋ณผ ๊ฒƒ์ด๋‹ค.

์ฟผ๋ฆฌ ์‘๋‹ต ์‹œ๊ฐ„์ด๋ž€?

  • MySQL์ด ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ์†Œ์š”๋˜๋Š” ์‹œ๊ฐ„์ด๋‹ค.
  • ์‘๋‹ต ์‹œ๊ฐ„, ์ฟผ๋ฆฌ ์‹œ๊ฐ„, ์‹คํ–‰ ์‹œ๊ฐ„, ์ฟผ๋ฆฌ ์ง€์—ฐ ์‹œ๊ฐ„์ด๋ผ๊ณ ๋„ ํ•œ๋‹ค.
  • MySQL์ด ์ฟผ๋ฆฌ๋ฅผ ๋ฐ›์•˜์„ ๋•Œ ์‹œ์ž‘๋˜๊ณ , ๊ฒฐ๊ณผ ์„ธํŠธ๋ฅผ ํด๋ผ์ด์–ธํŠธ์— ์ „์†กํ•œ ์‹œ์ ๊นŒ์ง€์˜ ๊ฒฝ๊ณผ ์‹œ๊ฐ„์„ ์˜๋ฏธํ•œ๋‹ค.
  • ์ฟผ๋ฆฌ ์‘๋‹ต ์‹œ๊ฐ„์ด ์ค„๋ฉด ์„ฑ๋Šฅ์€ ํ–ฅ์ƒ๋œ๋‹ค.

๊ฑฐ์ง“ ์„ฑ๋Šฅ์— ๊ด€ํ•œ ์‹คํ™”

  • 2004๋…„๋„ ๋‹น์‹œ์—๋Š” MySQL์— ๊ด€ํ•œ ์ฑ…์ด๋‚˜, ๋ธ”๋กœ๊ทธ, ๋„๊ตฌ๊ฐ€ ๊ฑฐ์˜ ์—†์—ˆ๋‹ค.
  • ๊ฒฐ๊ณผ์ ์œผ๋กœ MySQL ์„ฑ๋Šฅ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ์ตœ์‹  ๊ธฐ์ˆ ์€ ๊ณ ๊ฐ์—๊ฒŒ ๋” ๋งŽ์€ RAM์„ ํŒ๋งคํ•˜๋Š” ๊ฒƒ ๋ฟ์ด์—ˆ๋‹ค.
  • ์ €์ž๋Š” ๋” ๋งŽ์€ RAM์„ ํŒ๋งคํ•˜๋Š” ๋Œ€์‹  MySQL ์„ฑ๋Šฅ ๋ฌธ์ œ์˜ ๊ทผ๋ณธ ์›์ธ์„ ์ฐพ์•„ ํ•ด๊ฒฐํ•˜๊ณ ์ž ๊ธฐ์ˆ ์ ์ธ ์‹ฌ์ธต ๋ถ„์„์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ๋กœ ๋งˆ์Œ ๋จน์Œ
  • ๋‹น์‹œ ๋ฌธ์ œ๋Š” ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋กœ ์ธํ•ด ๊ฒŒ์‹œํŒ ์†๋„๊ฐ€ ๋А๋ ค์ง„ ์ƒํ™ฉ์ด์—ˆ์Œ
  • ์ €์ž๋Š” ์ค‘์š”ํ•œ ์ธ๋ฑ์Šค๊ฐ€ ๋ˆ„๋ฝ๋œ ๋‹จ์ผ ์ฟผ๋ฆฌ๋ฅผ ๋ฐœ๊ฒฌํ–ˆ๊ณ , ์ฟผ๋ฆฌ๋ฅผ ์ œ๋Œ€๋กœ ์ธ๋ฑ์‹ฑํ•˜์ž ์„ฑ๋Šฅ์ด ํš๊ธฐ์ ์œผ๋กœ ํ–ฅ์ƒ๋จ.
  • ๋ฌผ๋ก  ๊ณ ๊ฐ์€ ์ถ”๊ฐ€ ๋น„์šฉ์„ ์ง€๋ถˆํ•  ํ•„์š”๊ฐ€ ์—†์–ด์ง
  • ์ด๋ ‡๋“ฏ, ์ด ์ฑ…์— ๋‚˜์˜ค๋Š” ๋ชจ๋ฒ” ์‚ฌ๋ก€์™€ ๊ธฐ์ˆ ๋“ค๋กœ ๊ฝค ๋งŽ์€ MySQL ์„ฑ๋Šฅ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Œ

ํ•ต์‹ฌ ์ง€ํ‘œ(North Star)

  • ๊ธฐ๋Šฅ์„ ๋ฐฐํฌํ•˜๊ณ , ์‹œ์Šคํ…œ ๊ณผ์—ด์„ ํ†ต์ œํ•˜๋Š” ์‚ฌ์ด์— ๋ˆ„๊ฐ€ MySQL์— ์‹œ๊ฐ„์„ ํ• ์• ํ•  ์ˆ˜ ์žˆ์„๊นŒ?
  • ๋” ๋งŽ์€ RAM, ๋” ๋น ๋ฅธ CPU, ๋” ๋†’์€ ์Šคํ† ๋ฆฌ์ง€์˜ IOPS๊ฐ€ ํ•„์š”ํ•œ ๊ฒƒ์ผ๊นŒ?
  • ์•„๋‹ˆ๋ฉด ์ตœ๊ทผ ์ฝ”๋“œ ๋ณ€๊ฒฝ์œผ๋กœ ์ธํ•œ ๋ฌธ์ œ์ผ๊นŒ?
  • ๊ทธ๊ฒƒ๋„ ์•„๋‹ˆ๋ผ๋ฉด DBA๊ฐ€ DB์— ๋ฌด์–ธ๊ฐ€ ์ž‘์—…์„ ํ•˜๊ณ  ์žˆ์–ด ์ด๋ฅธ๋ฐ” โ€˜์‹œ๋„๋Ÿฌ์šด ์ด์›ƒโ€™ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ผ๊นŒ?
  • ์‹ ๊ทœ๋กœ ๋“ฑ๋กํ•œ ์•ฑ์ด ํ‰ํŒ์ด ์ข‹์•„ ์‚ฌ์šฉ์ž๊ฐ€ ๋ชฐ๋ฆฐ ๊ฒƒ์ด ์›์ธ์ผ๊นŒ?
  • ๊ทธ๊ฒƒ๋ณด๋‹ค๋„, ์ฟผ๋ฆฌ ์‘๋‹ต ์‹œ๊ฐ„์€ ์‹ค์ œ ํ•ด๊ฒฐ์ฑ…์œผ๋กœ ์ด์–ด์ง€๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฐ•๋ ฅํ•œ ํŠน์„ฑ์ด ์žˆ์œผ๋ฏ€๋กœ ๊ฐ€์žฅ ๋จผ์ € ์‚ดํŽด๋ณด์•„์•ผ ํ•œ๋‹ค.

์˜๋ฏธ ์žˆ๋Š” ๊ฒƒ

  • ๊ฐ€๋ น ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์†๋„๊ฐ€ ๋น ๋ฅผ ๋•Œ๋Š” ์•„๋ฌด๋„ ๊ทธ๊ฒƒ์„ ์‚ดํŽด๋ณด๊ฑฐ๋‚˜ ์˜๋ฌธ์„ ๊ฐ–์ง€ ์•Š๋Š”๋‹ค.
  • ์ฟผ๋ฆฌ ์‘๋‹ต ์‹œ๊ฐ„์ด ์šฐ๋ฆฌ๊ฐ€ ๊ฒฝํ—˜ํ•˜๋Š” ์œ ์ผํ•œ ๋ฉ”ํŠธ๋ฆญ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
  • ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๋Š”๋ฐ 7.5์ดˆ๊ฐ€ ๊ฑธ๋ฆฌ๋ฉด ์šฐ๋ฆฌ๋Š” 7.5์ดˆ์˜ ์กฐ๊ธ‰ํ•จ์„ ๊ฒฝํ—˜ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์šฐ๋ฆฌ์—๊ฒŒ๋Š” ์‹œ๊ฐ„์ด ์˜๋ฏธ ์žˆ๋‹ค.

์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ๊ฒƒ

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

์ฟผ๋ฆฌ ๋ณด๊ณ 

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

์†Œ์Šค

  • ์ฟผ๋ฆฌ ๋ฉ”ํŠธ๋ฆญ์€ ์Šฌ๋กœ ์ฟผ๋ฆฌ ๋กœ๊ทธ๋‚˜ ์„ฑ๋Šฅ ์Šคํ‚ค๋งˆ์—์„œ ๋น„๋กฏ๋œ๋‹ค.
  • ์ด๋ฆ„์—์„œ ์•Œ ์ˆ˜ ์žˆ๋“ฏ ์Šฌ๋กœ ์ฟผ๋ฆฌ ๋กœ๊ทธ๋Š” ๋””์Šคํฌ์— ์žˆ๋Š” ๋กœ๊ทธ ํŒŒ์ผ์ด๊ณ , ์„ฑ๋Šฅ ์Šคํ‚ค๋งˆ๋Š” performance_schema์™€ ๊ฐ™์€ ์ด๋ฆ„์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋‹ค.
  • ๋””์Šคํฌ์˜ ๋กœ๊ทธ ํŒŒ์ผ๊ณผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํ…Œ์ด๋ธ”์€ ๋ณธ์งˆ์ ์œผ๋กœ ์™„์ „ํžˆ ๋‹ค๋ฅด์ง€๋งŒ, ๋‘˜ ๋‹ค ์ฟผ๋ฆฌ ๋ฉ”ํŠธ๋ฆญ์„ ์ œ๊ณตํ•œ๋‹ค.
  • ์ฃผ์š” ์ฐจ์ด์ ์€ ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ์ฟผ๋ฆฌ ๋ฉ”ํŠธ๋ฆญ์„ ์ œ๊ณตํ•˜๋Š”์ง€์ด๋‹ค.
  • ๋‘˜ ๋‹ค ์ฟผ๋ฆฌ ์‘๋‹ต ์‹œ๊ฐ„์„ ์ œ์™ธํ•˜๊ณ  3 ~ 20๊ฐœ ์ด์ƒ์˜ ๋ฉ”ํŠธ๋ฆญ์„ ์ œ๊ณตํ•œ๋‹ค.

์Šฌ๋กœ ์ฟผ๋ฆฌ ๋กœ๊ทธ๋ž€ ์ด๋ฆ„์—๋Š” ์—ญ์‚ฌ๊ฐ€ ์žˆ๋‹ค. ์ „๋ถ€ํ„ฐ MySQL์€ N์ดˆ ์ด์ƒ ์‹คํ–‰๋˜๋Š” ์ฟผ๋ฆฌ๋งŒ ๊ธฐ๋กํ–ˆ๊ณ , ์ด๋•Œ ์ตœ์†Ÿ๊ฐ’์€ 1์ด์—ˆ๋‹ค. ๊ทธ ๋ฏธ๋งŒ์œผ๋กœ ์ˆ˜ํ–‰๋˜๋Š” ์ฟผ๋ฆฌ๋Š” ๊ธฐ๋กํ•˜์ง€ ์•Š์•˜๋Š”๋ฐ, ๊ทธ ์ด์œ ๋Š” ๋นจ๋ž๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์Šฌ๋กœ ์ฟผ๋ฆฌ ๋กœ๊ทธ๋Š” ์ด๋ฆ„ ๊ทธ๋Œ€๋กœ๋‹ค. ์˜ค๋Š˜๋‚ ์—” ์ตœ์†Ÿ๊ฐ’์ด 0์ด๋ฉฐ, ์ด๋ ‡๊ฒŒ ์„ค์ •ํ•˜๋ฉด MySQL์€ ์‹คํ–‰๋˜๋Š” ๋ชจ๋“  ์ฟผ๋ฆฌ๋ฅผ ๊ธฐ๋กํ•œ๋‹ค.

  • ์—ฌ๋Ÿฌ ์ƒํ™ฉ์„ ๊ณ ๋ คํ•ด๋ด๋„ ์„ฑ๋Šฅ ์Šคํ‚ค๋งˆ๋Š” ํ˜„์žฌ ๋ชจ๋“  ๋ฒ„์ „๊ณผ ๋ฐฐํฌ ๋ฒ„์ „์— ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ์ฟผ๋ฆฌ ๋ฉ”ํŠธ๋ฆญ์„ ์ œ๊ณตํ•˜๋Š” ๊ฐ€์žฅ ์ข‹์€ ์†Œ์Šค์ด๋‹ค.
  • ์„ฑ๋Šฅ ์Šคํ‚ค๋งˆ๋Š” ๋กœ์ปฌ๊ณผ ํด๋ผ์šฐ๋“œ์—์„œ ์ž‘๋™ํ•˜๋ฉฐ, ์ด ์ฑ…์—์„œ ์ œ๊ณตํ•˜๋Š” ์ฟผ๋ฆฌ ๋ฉ”ํŠธ๋ฆญ์„ ๋ชจ๋‘ ์ œ๊ณตํ•˜๊ณ  ๊ฐ€์žฅ ์ผ๊ด€์„ฑ์ด ์žˆ๋‹ค.
  • ๋˜ํ•œ MySQL์„ ์‹ฌ์ธต ๋ถ„์„ํ•  ์ˆ˜ ์žˆ๋Š” ํ’๋ถ€ํ•œ ์—ฌํƒ€ ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•˜๋ฏ€๋กœ ๊ทธ ์œ ์šฉ์„ฑ์€ ์ฟผ๋ฆฌ ๋ฉ”ํŠธ๋ฆญ ์ฐจ์›์„ ํ›จ์”ฌ ๋Šฅ๊ฐ€ํ•œ๋‹ค.
  • ์Šฌ๋กœ ์ฟผ๋ฆฌ ๋กœ๊ทธ๋„ ์ข‹์€ ์†Œ์Šค์ด์ž, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋งค์šฐ ๋‹ค์–‘ํ•˜๋‹ค.
  1. MySQL
    • ์‹œ์Šคํ…œ ๋ณ€์ˆ˜ log_slow_extra๋ฅผ ํ™œ์„ฑํ™”ํ•˜๋ฉด ๋œ๋‹ค.
    • ์„ฑ๋Šฅ ์Šคํ‚ค๋งˆ์— ๋น„ํ•ด ์ œ๊ณตํ•˜๋Š” ์ฟผ๋ฆฌ ๋ฉ”ํŠธ๋ฆญ์ด ์ œํ•œ์ ์ด์–ด์„œ, ๊ฐ€๋Šฅํ•˜๋ฉด ์„ฑ๋Šฅ ์Šคํ‚ค๋งˆ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.
    • ์ฟผ๋ฆฌ ๋ฉ”ํŠธ๋ฆญ์ด ์ œํ•œ๋˜๋ฉด ๋ถ„์„์˜ ์งˆ์€ ๋‚ฎ์•„์งˆ ์ˆ˜ ๋ฐ–์— ์—†๋‹ค.
  2. Percona ์„œ๋ฒ„
    • ์‹œ์Šคํ…œ ๋ณ€์ˆ˜ log_slow_inquency๋ฅผ ๊ตฌ์„ฑํ•˜๋ฉด ์Šฌ๋กœ ์ฟผ๋ฆฌ ๋กœ๊ทธ์— ํ›จ์”ฌ ๋” ๋งŽ์€ ๋ฉ”ํŠธ๋ฆญ์„ ์ œ๊ณตํ•œ๋‹ค.
    • ์‹œ์Šคํ…œ ๋ณ€์ˆ˜ log_slow_rate_limit๊ฐ€ ๊ตฌ์„ฑ๋˜๋ฉด ์ฟผ๋ฆฌ ์ƒ˜ํ”Œ๋ง์„ ์ง€์›ํ•˜๋ฏ€๋กœ ์‚ฌ์šฉ๋Ÿ‰์ด ๋งŽ์€ ์„œ๋ฒ„ ์œ ์šฉํ•˜๋‹ค.
    • ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ ๋•Œ๋ฌธ์— Percona ์„œ๋ฒ„์˜ ์Šฌ๋กœ ์ฟผ๋ฆฌ ๋กœ๊ทธ๋Š” ํ›Œ๋ฅญํ•œ ์†Œ์Šค๋กœ์„œ ์—ญํ• ์„ ํ•œ๋‹ค.
  3. MariaDB ์„œ๋ฒ„
    • Percona ์„œ๋ฒ„์˜ ์Šฌ๋กœ ์ฟผ๋ฆฌ ๋กœ๊ทธ ํ–ฅ์ƒ์„ ์‚ฌ์šฉํ•˜์ง€๋งŒ ๋‘ ๊ฐ€์ง€ ์ฐจ์ด์ ์ด ์žˆ๋‹ค.
    • ์‹œ์Šคํ…œ ๋ณ€์ˆ˜ log_slow_verbosity๊ฐ€ MariaDB์—์„œ๋Š” ๋‹ค๋ฅด๊ฒŒ ๊ตฌ์„ฑ์ด ๋˜๊ณ , Rows_affected ๋ฉ”ํŠธ๋ฆญ์„ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ์ด๋‹ค.
    • ์ด์™ธ์—๋Š” ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํ›Œ๋ฅญํ•œ ์†Œ์Šค๋กœ์„œ ์—ญํ• ์„ ํ•œ๋‹ค.
  • ์Šฌ๋กœ ๋กœ๊ทธ ์ฟผ๋ฆฌ๋Š” ๊ธฐ๋ณธ์œผ๋กœ ๋น„ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์ง€๋งŒ, MySQL์„ ์žฌ์‹œ์ž‘ํ•  ํ•„์š”์—†์ด ๋ฐ”๋กœ ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์„ฑ๋Šฅ ์Šคํ‚ค๋งˆ๋Š” ๊ธฐ๋ณธ์œผ๋กœ ํ™œ์„ฑํ™”๋˜์–ด์•ผ ํ•˜์ง€๋งŒ, ์ผ๋ถ€ ํด๋ผ์šฐ๋“œ ์ œ๊ณต์ž๋Š” ๋น„ํ™œ์„ฑํ™”๋ฅผ ๊ธฐ๋ณธ์œผ๋กœ ์„ค์ •ํ•˜๊ธฐ๋„ ํ•œ๋‹ค.
  • ๋˜ํ•œ ์Šฌ๋กœ ๋กœ๊ทธ ์ฟผ๋ฆฌ์™€๋Š” ๋‹ฌ๋ฆฌ ์„ฑ๋Šฅ ์Šคํ‚ค๋งˆ๋ฅผ ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด MySQL์„ ์žฌ์‹œ์ž‘ํ•ด์•ผ ํ•œ๋‹ค.

์Šฌ๋กœ ์ฟผ๋ฆฌ ๋กœ๊ทธ๋Š” long_query_time์„ 0์œผ๋กœ ์„ค์ •ํ•˜๋ฉด ๋ชจ๋“  ์ฟผ๋ฆฌ๋ฅผ ๊ธฐ๋กํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์ฃผ์˜ํ•ด์•ผ ํ•œ๋‹ค. ์‚ฌ์šฉ๋Ÿ‰์ด ๋งŽ์€ ์„œ๋ฒ„์—์„œ๋Š” ๋””์Šคํฌ ์ž…์ถœ๋ ฅ์ด ์ฆ๊ฐ€ํ•˜๊ณ , ์ƒ๋‹นํ•œ ์–‘์˜ ๋””์Šคํฌ ๊ณต๊ฐ„์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

์ง‘๊ณ„

  • ์ฟผ๋ฆฌ ๋ฉ”ํŠธ๋ฆญ์€ ์ฟผ๋ฆฌ ๋ณ„๋กœ ๊ทธ๋ฃนํ™”๋˜๊ณ  ์ง‘๊ณ„๋œ๋‹ค.
  • ์ฟผ๋ฆฌ ์‘๋‹ต ์‹œ๊ฐ„์€ MySQL ์„ฑ๋Šฅ์—์„œ ํ•ต์‹ฌ ์ง€ํ‘œ์ด๋ฏ€๋กœ ์ฟผ๋ฆฌ ๋ณ„๋กœ ์ฟผ๋ฆฌ ๋ฉ”ํŠธ๋ฆญ์„ ๊ทธ๋ฃนํ™”ํ•˜๋Š” ๊ฒƒ์ด ์‘๋‹ต ์‹œ๊ฐ„์ด ๊ฐ€์žฅ ๋А๋ฆฐ ์ฟผ๋ฆฌ๋ฅผ ํ™•์ธํ•˜๋Š” ์ตœ์„ ์˜ ๋ฐฉ๋ฒ•์ด๋‹ค.
  • ํ•œ ๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ์กด์žฌํ•˜๋Š”๋ฐ, ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ์ฟผ๋ฆฌ๊ฐ€ ์†ํ•œ ๊ทธ๋ฃน์„ ๊ณ ์œ ํ•˜๊ฒŒ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ๋Š” ์ง€์ด๋‹ค.
  • ๊ฐ€๋ น ์‹œ์Šคํ…œ ๋ฉ”ํŠธ๋ฆญ(CPU, ๋ฉ”๋ชจ๋ฆฌ, ์Šคํ† ๋ฆฌ์ง€) ๋“ฑ์€ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์ด ๊ณ ์œ ํ•˜๋ฏ€๋กœ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„ ๋ณ„๋กœ ๊ทธ๋ฃนํ™”๋œ๋‹ค.
  • ๊ทธ๋Ÿฌ๋‚˜ ์ฟผ๋ฆฌ์—๋Š” ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์ฒ˜๋Ÿผ ๊ณ ์œ ํ•˜๊ฒŒ ์‹๋ณ„๋˜๋Š” ํŠน์„ฑ์ด ์—†๋‹ค.
  • ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ •๊ทœํ™”๋œ SQL ๋ฌธ์„ SHA-256 ํ•ด์‹œ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
1
2
3
SELECT col FROM tbl WHERE id=1;                                  # SQL
SELECT `col` FROM `tbl` WHERE `id` = ?                           # ์ •๊ทœํ™”๋œ SQL
3d590d7a91357f8b1e2f8458f8289111321b6bbad6ff3eb785e4fc18a79ca06c # ํ•ด์‹œ๊ฐ’
  • ์ •๊ทœํ™”๋œ SQL์„ ๋‹ค์ด์ œ์ŠคํŠธ ํ…์ŠคํŠธ, ํ•ด์‹œ๊ฐ’์€ ๋‹ค์ด์ œ์ŠคํŠธ ํ•ด์‹œ๋ผ๊ณ  ํ•œ๋‹ค.
  • MySQL ๋งค๋‰ด์–ผ์—์„œ๋Š” ์ด ๋‘˜์„ ๊ฐ€๋ฆฌํ‚ฌ ๋•Œ ๋ชจํ˜ธํ•˜๊ฒŒ ๋‹ค์ด์ œ์ŠคํŠธ๋ผ๊ณ  ์ง€์นญํ•œ๋‹ค.
  • ์ฟผ๋ฆฌ ๋ฉ”ํŠธ๋ฆญ์˜ ๋งฅ๋ฝ์—์„œ ์šฉ์–ด์— ์ค‘์š”ํ•œ ๋ณ€ํ™”๊ฐ€ ์žˆ๋‹ค.
  • ์ฟผ๋ฆฌ๋ผ๋Š” ์šฉ์–ด๋Š” ๋‹ค์ด์ œ์ŠคํŠธ ํ…์ŠคํŠธ์™€ ๋™์˜์–ด๋กœ ๋ณ€๊ฒฝ๋œ๋‹ค.
  • SQL๋ฌธ์€ ์ฟผ๋ฆฌ ์ƒ˜ํ”Œ์ด๋ผ๊ณ ๋„ ํ•˜๋ฉฐ, ๋ณด๊ณ ๋  ์ˆ˜๋„ ์žˆ๊ณ  ๊ทธ๋ ‡์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ๋‹ค.
  • ๋Œ€๋ถ€๋ถ„์˜ ์ฟผ๋ฆฌ ๋ฉ”ํŠธ๋ฆญ ๋„๊ตฌ๋Š” ๋ณด์•ˆ ๋•Œ๋ฌธ์— ์ƒ˜ํ”Œ์„ ํ๊ธฐํ•˜๊ณ  ๋‹ค์ด์ œ์ŠคํŠธ ํ…์ŠคํŠธ์™€ ํ•ด์‹œ๋งŒ ๋ณด๊ณ ๋œ๋‹ค.
  • EXPLAIN ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ฟผ๋ฆฌ ์‹คํ–‰์„ ์ดํ•ดํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ฟผ๋ฆฌ ๋ถ„์„์— ์ƒ˜ํ”Œ์ด ํ•„์š”ํ•˜๋‹ค.
  • ์ผ๋ถ€ ์ฟผ๋ฆฌ ๋ฉ”ํŠธ๋ฆญ ๋„๊ตฌ๋Š” ์ƒ˜ํ”Œ์„ EXPLAINํ•œ ๋‹ค์Œ ํ๊ธฐํ•˜๊ณ  EXPLAIN ๊ณ„ํš(EXPLAIN ๊ฒฐ๊ณผ)์„ ๋ณด๊ณ ํ•œ๋‹ค.
  • ์ƒ˜ํ”Œ๋งŒ ๋ณด๊ณ ํ•˜๋Š” ๋„๊ตฌ๋“ค๋„ ์žˆ์ง€๋งŒ, EXPLAIN ๋ช…๋ น์— SQL์„ ๋ณต์‚ฌ ๋ฐ ๋ถ™์—ฌ๋„ฃ๊ธฐํ•˜๋ฉด ๋˜๋ฏ€๋กœ ์—ฌ์ „ํžˆ ํŽธ๋ฆฌํ•˜๋‹ค.
  • ๋งŒ์•ฝ ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์ด ์—†์œผ๋ฉด ์†Œ์Šค์—์„œ SQL ์ƒ˜ํ”Œ์„ ์ˆ˜๋™์œผ๋กœ ์ถ”์ถœํ•˜๊ฑฐ๋‚˜ ์ž‘์„ฑํ•ด์•ผ ํ•œ๋‹ค.
  • ์šฉ์–ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฟผ๋ฆฌ ๋ฉ”ํŠธ๋ฆญ ๋„๊ตฌ์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋‹ค.
๊ณต์‹๋Œ€์ฒด
SQL ๋ฌธ์ฟผ๋ฆฌ
์ƒ˜ํ”Œ์ฟผ๋ฆฌ
๋‹ค์ด์ œ์ŠคํŠธ ํ…์ŠคํŠธํด๋ž˜์Šค, ํŒจ๋ฐ€๋ฆฌ, ํ•‘๊ฑฐํ”„๋ฆฐํŠธ, ์ฟผ๋ฆฌ
๋‹ค์ด์ œ์ŠคํŠธ ํ•ด์‹œํด๋ž˜์Šค ID, ์ฟผ๋ฆฌ ID, ์‹œ๊ทธ๋‹ˆ์ฒ˜

โ€œ๊ฐ„๊ฒฐํ•จ์€ ์ง€ํ˜œ์˜ ๋ณธ์งˆ์ด๋‹ค.โ€

  • Percona์—์„œ ์œ ๋ž˜ํ•œ ๋‹ค๋ฅธ ์šฉ์–ด๋Š” ์ฟผ๋ฆฌ ์ถ”์ƒํ™”์ด๋‹ค.
  • SQL ๋ช…๋ น๊ณผ ํ…Œ์ด๋ธ” ๋ชฉ๋ก์œผ๋กœ ๊ณ ๋„๋กœ ์ถ”์ƒํ™”๋œ SQL ๋ฌธ์ด๋‹ค.
1
2
SELECT col FROM tbl WHERE id=1; # SQL
SELECT tbl                      # ์ฟผ๋ฆฌ ์ถ”์ƒํ™”
  • ์ฟผ๋ฆฌ ์ถ”์ƒํ™”๋Š” ๊ณ ์œ ํ•˜์ง€๋Š” ์•Š์ง€๋งŒ ๊ฐ„๊ฒฐํ•ด์„œ ์œ ์šฉํ•˜๋‹ค.
  • ๋Œ€๊ฐœ ๊ฐœ๋ฐœ์ž๋“ค์€ ์ฟผ๋ฆฌ ์ถ”์ƒํ™”๋งŒ ๋ณด๊ณ ๋„ ๊ทธ๊ฒƒ์ด ๋‚˜ํƒ€๋‚ด๋Š” ์ „์ฒด ์ฟผ๋ฆฌ๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋‹ค.
  • ์ •๊ทœํ™” ๊ณผ์ •์€ ๋˜ ๋‹ค๋ฅธ ์ค‘์š”ํ•œ ์ ์„ ์ œ์‹œํ•œ๋‹ค.
  • ๋‹ค๋ฅธ ๊ตฌ๋ฌธ์œผ๋กœ ๊ฐ™์€ ๋…ผ๋ฆฌ์˜ ์ฟผ๋ฆฌ๋ฅผ ๋™์ ์œผ๋กœ ์ƒ์„ฑํ•˜๋ฉด ์•ˆ๋œ๋‹ค.
  • ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋‹ค์ด์ œ์ŠคํŠธ๋กœ ์ •๊ทœํ™”๋˜๊ณ  ๋‹ค๋ฅธ ์ฟผ๋ฆฌ๋กœ ๋ณด๊ณ ๋œ๋‹ค.
1
2
SELECT name FROM captions WHERE last_name = 'Picard';
SELECT name FROM captions WHERE last_name = 'Picard' AND first_name = 'Jean-Luc';
  • ์œ„ ๋‘ ์ฟผ๋ฆฌ๋Š” ๋…ผ๋ฆฌ์ ์œผ๋กœ๋Š” ๊ฐ™์„ ์ˆ˜ ์žˆ์ง€๋งŒ, ์„œ๋กœ ๋‹ค๋ฅธ ๋‹ค์ด์ œ์ŠคํŠธ๋กœ ์ •๊ทœํ™”๋˜๋ฏ€๋กœ ๋ณด๊ณ  ์ธก๋ฉด์—์„œ๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ์ฟผ๋ฆฌ์ด๋‹ค.
  • ์–ด๋–ค ์ฟผ๋ฆฌ ๋ฉ”ํŠธ๋ฆญ ๋„๊ตฌ๋„ ์ด ์ฟผ๋ฆฌ๋“ค์„ ๊ฒฐํ•ฉํ•  ์ˆ˜ ์—†๋‹ค.
  • ๊ทธ๋ฆฌ๊ณ  ๋ชจ๋“  ์กฐ๊ฑด, ํŠนํžˆ WHERE ์ ˆ์€ ์ฟผ๋ฆฌ ์‹คํ–‰๊ณผ ์ตœ์ ํ™”์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋ฏ€๋กœ ๋ณ„๋„๋กœ ์ด ์ฟผ๋ฆฌ๋“ค์„ ๋ณด๊ณ ํ•˜๋Š” ๊ฒƒ์ด ๊ธฐ์ˆ ์ ์œผ๋กœ ์˜ณ๋‹ค.
  • ์ฟผ๋ฆฌ ์ •๊ทœํ™”์—์„œ ํ•œ ๊ฐ€์ง€ ์•Œ์•„์•ผ ํ•  ์ ์€ ๊ฐ’์ด ์ œ๊ฑฐ๋˜๋ฏ€๋กœ ๋‹ค์Œ ๋‘ ์ฟผ๋ฆฌ๋Š” ๊ฐ™์€ ๋‹ค์ด์ œ์ŠคํŠธ๋กœ ์ •๊ทœํ™”๋˜๊ณ  ๊ทธ๋ฃนํ™”๋˜๊ณ  ์ง‘๊ณ„๋˜์–ด ํ•˜๋‚˜์˜ ์ฟผ๋ฆฌ๋กœ ๋ณด๊ณ ๋œ๋‹ค.
1
2
3
SELECT `name` FROM star_ships WHERE class IN ('galaxy');             # SQL 1
SELECT `name` FROM star_ships WHERE class IN ('galaxy', 'intrepid'); # SQL 2
SELECT `name` FROM star_ships WHERE class IN (...);                  # ๋‹ค์ด์ œ์ŠคํŠธ ํ…์ŠคํŠธ

๋ณด๊ณ 

  • ํ•˜๋‚˜์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ˆ˜๋ฐฑ ๊ฐœ์˜ ์ฟผ๋ฆฌ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋ณด๊ณ ๋Š” ๋„์ „์ด์ž ๊ธฐ์ˆ ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๊ฐ ์ฟผ๋ฆฌ์—๋Š” ๋งŽ์€ ๋ฉ”ํŠธ๋ฆญ์ด ์กด์žฌํ•˜๋ฉฐ, ๊ฐ ๋ฉ”ํŠธ๋ฆญ์—๋Š” ์ตœ์†Œ, ์ตœ๋Œ€, ํ‰๊ท , ๋ฐฑ๋ถ„์œ„์ˆ˜ ๋“ฑ ์—ฌ๋Ÿฌ ํ†ต๊ณ—๊ฐ’์ด ์žˆ๋‹ค.
  • ๋˜ํ•œ ๊ฐ ์ฟผ๋ฆฌ์—๋Š” ์ƒ˜ํ”Œ, EXPLAIN ๊ณ„ํš, ํ…Œ์ด๋ธ” ๊ตฌ์กฐ ๋“ฑ์˜ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋‹ค.
  • ์ด ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ์ฒ˜๋ฆฌํ•˜๊ณ  ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒƒ์€ ์–ด๋ ต๋‹ค.
  • ๊ฑฐ์˜ ๋ชจ๋“  ์ฟผ๋ฆฌ ๋ฉ”ํŠธ๋ฆญ ๋„๊ตฌ๋Š” ์ฟผ๋ฆฌ ํ”„๋กœํŒŒ์ผ๊ณผ ์ฟผ๋ฆฌ ๋ณด๊ณ ์„œ๋ผ๋Š” ๋‘ ๊ฐ€์ง€ ์ˆ˜์ค€์˜ ๊ณ„์ธต ๊ตฌ์กฐ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•œ๋‹ค.
์ฟผ๋ฆฌ ํ”„๋กœํŒŒ์ผ
  • ์ฟผ๋ฆฌ ํ”„๋กœํŒŒ์ผ์—๋Š” ๋А๋ฆฐ ์ฟผ๋ฆฌ๊ฐ€ ํ‘œ์‹œ๋œ๋‹ค.
  • ์ฟผ๋ฆฌ ๋ณด๊ณ ๋ฅผ ์œ„ํ•ด ์ตœ์ƒ๋‹จ์— ๊ตฌ์„ฑ๋œ ๊ฒƒ์œผ๋กœ, ์ผ๋ฐ˜์ ์œผ๋กœ ์ฟผ๋ฆฌ ๋ฉ”ํŠธ๋ฆญ ๋„๊ตฌ์— ์ฒ˜์Œ ํ‘œ์‹œ๋˜๋Š” ํ•ญ๋ชฉ์ด๋‹ค.
  • ์ฟผ๋ฆฌ ๋‹ค์ด์ œ์ŠคํŠธ์™€ ํ•จ๊ป˜ ๋ฉ”ํŠธ๋ฆญ์˜ ์ œํ•œ๋œ ํ•˜์œ„ ์„ธํŠธ๋ฅผ ์ œ๊ณตํ•˜๋ฏ€๋กœ ํ”„๋กœํŒŒ์ผ์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.
  • ๋А๋ฆผ์ด๋ผ๋Š” ๊ฐœ๋…์€ ์ฟผ๋ฆฌ๊ฐ€ ์ •๋ ฌ๋˜๋Š” ์ฟผ๋ฆฌ ๋ฉ”ํŠธ๋ฆญ์˜ ์ง‘๊ณ„์น˜์ธ ์ •๋ ฌ ๋ฉ”ํŠธ๋ฆญ๊ณผ ๊ด€๋ จ๋œ๋‹ค.
  • ์ •๋ ฌ ๋ฉ”ํŠธ๋ฆญ์ด ์ฟผ๋ฆฌ ์‹œ๊ฐ„์ด ์•„๋‹ˆ๋”๋ผ๋„ ์ฒซ ๋ฒˆ์งธ๋กœ ์ •๋ ฌ๋œ ์ฟผ๋ฆฌ๋ฅผ ๊ฐ€์žฅ ๋А๋ฆฐ ์ฟผ๋ฆฌ๋ผ๊ณ  ํ•œ๋‹ค.
  • ๋งŒ์•ฝ ์ •๋ ฌ ๋ฉ”ํŠธ๋ฆญ์ด ํ‰๊ท ์ ์œผ๋กœ ์ „์†ก๋œ ํ–‰ ์ˆ˜๋ผ๋ฉด, ์ฒซ ๋ฒˆ์งธ๋กœ ์ •๋ ฌ๋œ ์ฟผ๋ฆฌ๊ฐ€ ์—ฌ์ „ํžˆ ๊ฐ€์žฅ ๋А๋ฆฐ ์ฟผ๋ฆฌ๋ผ๊ณ  ํ•œ๋‹ค.
  • ์–ด๋–ค ์ฟผ๋ฆฌ ๋ฉ”ํŠธ๋ฆญ์ด๋“  ์ •๋ ฌ ๋ฉ”ํŠธ๋ฆญ์ด ๋  ์ˆ˜ ์žˆ์ง€๋งŒ, ์ผ๋ฐ˜์ ์œผ๋กœ๋Š” ์ฟผ๋ฆฌ ์‹œ๊ฐ„์ด ๊ธฐ๋ณธ ์ •๋ ฌ ๋ฉ”ํŠธ๋ฆญ์ด๋‹ค.
  • ์ฟผ๋ฆฌ ์‹คํ–‰ ์‹œ๊ฐ„์„ ์ค„์ด๋ฉด MySQL์ด ๋” ๋งŽ์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ์ž‘์—…์„ ๋” ๋นจ๋ฆฌ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์‹œ๊ฐ„์„ ํ™•๋ณดํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ฟผ๋ฆฌ ์‹œ๊ฐ„์„ ๊ธฐ์ค€์œผ๋กœ ์ฟผ๋ฆฌ๋ฅผ ์ •๋ ฌํ•˜๋ฉด ๊ฐ€์žฅ ๋А๋ฆฌ๊ณ  ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ์ฟผ๋ฆฌ๋ถ€ํ„ฐ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๊ทธ๋Ÿฌ๋‚˜ ์ฟผ๋ฆฌ ์‹œ๊ฐ„์ด ์–ด๋–ป๊ฒŒ ์ง‘๊ณ„๋˜๋Š”์ง€๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์•Œ๊ธฐ ์–ด๋ ต๋‹ค.
  • ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ์ง‘๊ณ„์น˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
์ฟผ๋ฆฌ ์ด์‹œ๊ฐ„
  • ์ฟผ๋ฆฌ ์ด์‹œ๊ฐ„์€ ์‹คํ–‰ ์‹œ๊ฐ„์˜ ์ดํ•ฉ์ด๋‹ค.
  • ์ด ๊ฐ’์€ MySQL์ด ์‹คํ–‰ํ•˜๋Š” ๋ฐ ๊ฐ€์žฅ ๋งŽ์€ ์‹œ๊ฐ„์„ ์†Œ๋น„ํ•˜๋Š” ์ฟผ๋ฆฌ๊ฐ€ ์–ด๋А ๊ฒƒ์ธ์ง€ ์•Œ ์ˆ˜ ์žˆ๋Š” ์ค‘์š”ํ•˜๊ณ  ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ์ง‘๊ณ„์น˜๋‹ค.
  • ์ฟผ๋ฆฌ ๋ฉ”ํŠธ๋ฆญ ๋„๊ตฌ๋Š” MySQL์ด ๊ฐ ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ์†Œ์š”๋˜๋Š” ๋ชจ๋“  ์‹œ๊ฐ„์„ ํ•ฉ์‚ฐํ•œ๋‹ค.
  • ์ด์‹œ๊ฐ„์ด ๊ฐ€์žฅ ๊ธด ์ฟผ๋ฆฌ๋Š” ๊ฐ€์žฅ ๋А๋ฆฌ๊ณ , ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ์ฟผ๋ฆฌ๋‹ค.
  • ์ด๊ฒƒ์ด ์™œ ์ค‘์š”ํ•œ ์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ์˜ˆ์‹œ๊ฐ€ ์žˆ๋‹ค.
  • ๊ฐ€๋ น ์ฟผ๋ฆฌ A๋Š” ์‘๋‹ต ์‹œ๊ฐ„์ด 1์ดˆ์ด๊ณ  10๋ฒˆ ์‹คํ–‰๋˜์ง€๋งŒ, ์ฟผ๋ฆฌ B๋Š” ์‘๋‹ต ์‹œ๊ฐ„์ด 0.1์ดˆ์ด๊ณ  1,000๋ฒˆ ์‹คํ–‰๋œ๋‹ค๊ณ  ํ•˜์ž.
  • ์ฟผ๋ฆฌ A๋Š” ์‘๋‹ต ์‹œ๊ฐ„์ด ํ›จ์”ฌ ๋А๋ฆฌ์ง€๋งŒ, ์ฟผ๋ฆฌ B๊ฐ€ 10๋ฐฐ ๋” ๋งŽ์€ ์‹œ๊ฐ„์ด ์†Œ์š”๋œ๋‹ค.
  • ์ฟผ๋ฆฌ ์ด์‹œ๊ฐ„์œผ๋กœ ์ •๋ ฌ๋œ ์ฟผ๋ฆฌ ํ”„๋กœํŒŒ์ผ์—์„œ ๊ฐ€์žฅ ๋А๋ฆฐ ์ฟผ๋ฆฌ๋Š” ์ฟผ๋ฆฌ B๋‹ค.
  • ์ด๋Š” ์ฟผ๋ฆฌ B๋ฅผ ์ตœ์ ํ™”ํ•จ์œผ๋กœ์จ MySQL์˜ ์‹œ๊ฐ„์„ ๊ฐ€์žฅ ๋งŽ์ด ํ™•๋ณดํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ค‘์š”ํ•˜๋‹ค.
์‹คํ–‰ ์‹œ๊ฐ„ ๋น„์œจ
  • ์‹คํ–‰ ์‹œ๊ฐ„ ๋น„์œจ์€ ์ฟผ๋ฆฌ ์ด์‹œ๊ฐ„์„ ์‹คํ–‰ ์ด์‹œ๊ฐ„์œผ๋กœ ๋‚˜๋ˆˆ ๊ฐ’์ด๋‹ค.
  • ์˜ˆ๋ฅผ ๋“ค์–ด ์ฟผ๋ฆฌ C์˜ ์ฟผ๋ฆฌ ์ด์‹œ๊ฐ„์ด 321ms์ด๊ณ , ์ฟผ๋ฆฌ D์˜ ์ฟผ๋ฆฌ ์ด์‹œ๊ฐ„์ด 100ms์ด๋ฉด ์‹คํ–‰ ์ด์‹œ๊ฐ„์€ 421ms์ด๋‹ค.
  • ๊ฐœ๋ณ„์ ์œผ๋กœ ์ฟผ๋ฆฌ C๋Š” ์‹คํ–‰ ์ด์‹œ๊ฐ„์˜ (321 / 421) ร— 100 = 76.2%์ด๊ณ  ์ฟผ๋ฆฌ D๋Š” ์‹คํ–‰ ์ด์‹œ๊ฐ„์˜ (100 / 421) ร— 100 = 23.8%์ด๋‹ค.
  • ์ฆ‰ MySQL์€ ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ์ด 421ms๊ฐ€ ์†Œ์š”๋˜์—ˆ์œผ๋ฉฐ, ๊ทธ์ค‘ 76.2%๋Š” ์ฟผ๋ฆฌ C๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ํ• ์• ํ•˜์˜€๋‹ค.
  • ์‹คํ–‰ ์‹œ๊ฐ„ ๋น„์œจ๋กœ ์ •๋ ฌ๋œ ํ”„๋กœํŒŒ์ผ์—์„œ๋Š” ์ฟผ๋ฆฌ C๊ฐ€ ๊ฐ€์žฅ ๋А๋ฆฐ ์ฟผ๋ฆฌ์ด๋‹ค.
  • ์‹คํ–‰ ์‹œ๊ฐ„ ๋น„์œจ์€ ์ผ๋ถ€ ์ฟผ๋ฆฌ ๋ฉ”ํŠธ๋ฆญ ๋„๊ตฌ์—์„œ๋งŒ ์‚ฌ์šฉ๋œ๋‹ค.
์ฟผ๋ฆฌ ๋ถ€ํ•˜
  • ์ฟผ๋ฆฌ ๋ถ€ํ•˜๋Š” ์ฟผ๋ฆฌ ์ด์‹œ๊ฐ„์„ ํด๋Ÿญ ํƒ€์ž„์œผ๋กœ ๋‚˜๋ˆˆ ๊ฒƒ์ด๋‹ค.
  • ํด๋Ÿญ ํƒ€์ž„์ด๋ž€ ์‹œ๊ฐ„ ๋ฒ”์œ„์— ๋Œ€ํ•œ ์ „์ฒด ์ดˆ ์ˆ˜์ด๋‹ค.
  • ์‹œ๊ฐ„ ๋ฒ”์œ„๊ฐ€ 4๋ถ„์ด๋ฉด ํด๋Ÿญ ์‹œ๊ฐ„์€ 300์ดˆ์ด๋‹ค.
  • ์˜ˆ๋ฅผ ๋“ค์–ด ์ฟผ๋ฆฌ E์˜ ์ฟผ๋ฆฌ ์ด์‹œ๊ฐ„์ด 250.2์ดˆ์ด๋ฉด ๋ถ€ํ•˜๋Š” 250.2 / 300 = 0.83์ด๋‹ค.
  • ๋˜ํ•œ ์ฟผ๋ฆฌ F์˜ ์ฟผ๋ฆฌ ์ด์‹œ๊ฐ„์ด 500.1์ดˆ์ด๋ฉด ๋ถ€ํ•˜๋Š” 500.1 / 300 = 1.67์ด๋‹ค.
  • ์ฟผ๋ฆฌ ๋ถ€ํ•˜ ๋ณ„๋กœ ์ •๋ ฌ๋œ ์ฟผ๋ฆฌ ํ”„๋กœํŒŒ์ผ์—์„œ ์ฟผ๋ฆฌ F๋Š” ๊ฐ€์žฅ ๋ถ€ํ•˜๊ฐ€ ํฌ๋ฏ€๋กœ ๊ฐ€์žฅ ๋А๋ฆฐ ์ฟผ๋ฆฌ์— ํ•ด๋‹น๋œ๋‹ค.
  • ๋ถ€ํ•˜๋Š” ์‹œ๊ฐ„๊ณผ ๊ด€๋ จ ์žˆ๊ธฐ๋„ ํ•˜์ง€๋งŒ ๋™์‹œ์— ์‹คํ–‰๋˜๋Š” ๋‹ค์ค‘ ์ธ์Šคํ„ด์Šค์™€ ๊ฐ™์€ ๋™์‹œ์„ฑ์„ ๋ฏธ๋ฌ˜ํ•˜๊ฒŒ ๋‚˜ํƒ€๋‚ด๊ธฐ๋„ ํ•œ๋‹ค.
  • ์ฟผ๋ฆฌ ๋ถ€ํ•˜๊ฐ€ ํ‰๊ท ์ ์œผ๋กœ 1.0๋ณด๋‹ค ์ž‘์œผ๋ฉด ์ฟผ๋ฆฌ๊ฐ€ ๋™์‹œ์— ์‹คํ–‰๋˜์ง€ ์•Š๋Š”๋‹ค.
  • ์•„๋‹ˆ๋ผ๋ฉด ์ฟผ๋ฆฌ ๋™์‹œ์„ฑ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.
  • ์˜ˆ๋ฅผ ๋“ค์–ด ์ฟผ๋ฆฌ ๋ถ€ํ•˜๊ฐ€ 3.5๋ผ๋Š” ๊ฒƒ์€ ์–ธ์ œ๋“ ์ง€ ์กฐํšŒํ•˜๋ฉด ์‹คํ–‰ ์ค‘์ธ ์ฟผ๋ฆฌ์˜ ์ธ์Šคํ„ด์Šค๊ฐ€ 3.5๊ฐœ ์ •๋„ ์žˆ๋‹ค๋Š” ๊ฒƒ๊ณผ ๊ฐ™๋‹ค.
  • ์ฟผ๋ฆฌ ๋ถ€ํ•˜๊ฐ€ ๋†’์„ ์ˆ˜๋ก ์ฟผ๋ฆฌ๊ฐ€ ๋™์ผํ•˜๊ฑฐ๋‚˜ ๊ฐ€๊นŒ์šด ํ–‰์— ์ ‘๊ทผํ•  ๋•Œ ๊ฒฝํ•ฉํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์ปค์ง„๋‹ค.
  • 10๋ณด๋‹ค ํฐ ์ฟผ๋ฆฌ ๋ถ€ํ•˜๋Š” ๋งค์šฐ ๋А๋ฆฐ ์ฟผ๋ฆฌ์ผ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์ง€๋งŒ ์˜ˆ์™ธ ์ƒํ™ฉ์ด ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค.
  • ์ •๋ ฌ ๋ฉ”ํŠธ๋ฆญ์ด ๋ณด๋‚ธ ํ–‰๊ณผ ๊ฐ™์€ ๋น„์‹œ๊ฐ„์  ์ฟผ๋ฆฌ ๋ฉ”ํŠธ๋ฆญ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ง„๋‹จํ•˜๋ ค๋Š” ๋‚ด์šฉ์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ์ง‘๊ณ„์น˜๊ฐ€ ์˜๋ฏธ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค.
  • ์ด๊ฒƒ์€ ์ฟผ๋ฆฌ ์ด์‹œ๊ฐ„๋ณด๋‹ค ํ›จ์”ฌ ๋œ ์ผ๋ฐ˜์ ์ด์ง€๋งŒ, ๋•Œ๋กœ๋Š” ์ตœ์ ํ™”ํ•  ๋งŒํ•œ ๊ฐ€์น˜๊ฐ€ ์žˆ๋Š” ์ฟผ๋ฆฌ๋ผ๋Š” ๊ฒƒ์„ ์•Œ๋ ค์ค€๋‹ค.
์ฟผ๋ฆฌ ๋ณด๊ณ ์„œ
  • ์ฟผ๋ฆฌ ๋ณด๊ณ ์„œ๋Š” ํ•˜๋‚˜์˜ ์ฟผ๋ฆฌ์— ๋Œ€ํ•ด ์•Œ์•„์•ผ ํ•  ๋ชจ๋“  ๊ฒƒ์„ ๋ณด์—ฌ์ค€๋‹ค.
  • ์ด๊ฒƒ์€ ์ฟผ๋ฆฌ ๋ณด๊ณ ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋‘ ๋ฒˆ์งธ ๋‹จ๊ณ„์ด๋‹ค.
  • ์ผ๋ฐ˜์ ์œผ๋กœ ์ฟผ๋ฆฌ ํ”„๋กœํŒŒ์ผ์—์„œ ๊ฐ€์žฅ ๋А๋ฆฐ ์ฟผ๋ฆฌ๋ฅผ ์„ ํƒํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์‹œ์ž‘ํ•œ๋‹ค.
  • ๋˜ํ•œ ๋ชจ๋“  ์ฟผ๋ฆฌ ๋ฉ”ํŠธ๋ฆญ๊ณผ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋„ ์ œ๊ณตํ•œ๋‹ค.
  • ์ฟผ๋ฆฌ ํ”„๋กœํŒŒ์ผ์€ ๊ทธ๊ฒƒ ์ž์ฒด๋กœ๋„ ๋งŽ์€ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜์ง€๋งŒ, ์ฟผ๋ฆฌ ๋ณด๊ณ ์„œ๋Š” ์ฟผ๋ฆฌ ๋ถ„์„์— ์‚ฌ์šฉ๋˜๋Š” ๋งŽ์€ ์ •๋ณด๋“ค๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.
  • ๋”ฐ๋ผ์„œ ์ฟผ๋ฆฌ ์‹คํ–‰์„ ์ดํ•ดํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋ฏ€๋กœ ์ •๋ณด๋Š” ๋งŽ์„ ์ˆ˜๋ก ์ข‹๋‹ค.
  • ์ฟผ๋ฆฌ ๋ณด๊ณ ์„œ๋Š” ๋ฉ”ํŠธ๋ฆญ ๋„๊ตฌ์— ๋”ฐ๋ผ ํฌ๊ฒŒ ๋‹ฌ๋ผ์ง„๋‹ค.
  • ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ์ตœ์†Œ ๋ณด๊ณ ์„œ์—๋Š” ์†Œ์Šค์—์„œ ๋น„๋กฏ๋œ ๋ชจ๋“  ์ฟผ๋ฆฌ ๋ฉ”ํŠธ๋ฆญ๊ณผ ์ตœ์†Œ, ์ตœ๋Œ€, ํ‰๊ท , ๋ฐฑ๋ถ„์œ„์ˆ˜ ๋“ฑ ํ•ด๋‹น ๋ฉ”ํŠธ๋ฆญ์˜ ๊ธฐ๋ณธ ํ†ต๊ณ—๊ฐ’์ด ํฌํ•จ๋œ๋‹ค.
  • ์ „์ฒด ๋ณด๊ณ ์„œ์—๋Š” ์ฟผ๋ฆฌ ์ƒ˜ํ”Œ, EXPLAIN ๊ณ„ํš, ํ…Œ์ด๋ธ” ๊ตฌ์กฐ ๋“ฑ์˜ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋œ๋‹ค.
  • ์ผ๋ถ€ ์ฟผ๋ฆฌ ๋ฉ”ํŠธ๋ฆญ ๋„๊ตฌ์—์„œ๋Š” ๋ฉ”ํŠธ๋ฆญ ๊ทธ๋ž˜ํ”„, ํžˆ์Šคํ† ๊ทธ๋žจ, ์ด์ƒ ๊ฐ์ง€, ์‹œ๊ฐ„ ์ด๋™ ๋น„๊ต, ๊ฐœ๋ฐœ์ž ๋„๊ตฌ, SQL ์ฃผ์„ ๋“ฑ์˜ ์ถ”๊ฐ€ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•œ๋‹ค.
  • ์ฟผ๋ฆฌ ๋ถ„์„์—๋Š” ๋ณด๊ณ ์„œ์˜ ์ฟผ๋ฆฌ ๋ฉ”ํŠธ๋ฆญ๋งŒ ์žˆ์œผ๋ฉด ๋˜๊ณ , ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜๋™์œผ๋กœ ์ˆ˜์ง‘ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋งŒ์•ฝ ์‚ฌ์šฉํ•˜๋Š” ์ฟผ๋ฆฌ ๋ฉ”ํŠธ๋ฆญ ๋„๊ตฌ๊ฐ€ ์ฟผ๋ฆฌ ๋ฉ”ํŠธ๋ฆญ๋งŒ ๋ณด๊ณ ํ•œ๋‹ค๋ฉด, ์ตœ์†Œํ•œ EXPLAIN ๊ณ„ํš๊ณผ ํ…Œ์ด๋ธ” ๊ตฌ์กฐ๋ฅผ ์ˆ˜๋™์œผ๋กœ ์ˆ˜์ง‘ํ•˜๋Š” ๊ฒƒ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์•ผ ํ•œ๋‹ค.
  • ์ด๋ ‡๊ฒŒ ์ฟผ๋ฆฌ ๋ณด๊ณ ์„œ๊ฐ€ ์žˆ๋‹ค๋ฉด, ์ฟผ๋ฆฌ ๋ถ„์„์„ ์ˆ˜ํ–‰ํ•  ์ค€๋น„๊ฐ€ ๋œ ๊ฒƒ์ด๋‹ค.
This post is licensed under CC BY 4.0 by the author.