๐Ÿ”ง ์ธ๋ฑ์Šค ์ตœ์ ํ™”๋ฅผ ํ†ตํ•œ ์ฟผ๋ฆฌ ์„ฑ๋Šฅ ๊ฐœ์„  ์‚ฌ๋ก€ ๋ถ„์„

Hyojinยท2024๋…„ 11์›” 12์ผ
0

๊ฐœ์š”


๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ตœ์ ํ™” ์ค‘ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž์ฃผ ์กฐํšŒ๋˜๋Š” ์ฟผ๋ฆฌ์˜ ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•ฉ๋‹ˆ๋‹ค.
์ด๋ฒˆ ์ตœ์ ํ™” ์ž‘์—…์—์„œ๋Š” seat ํ…Œ์ด๋ธ”์„ ๋Œ€์ƒ์œผ๋กœ ์ธ๋ฑ์Šค๋ฅผ ์ ์šฉํ•˜์—ฌ ์ฟผ๋ฆฌ ์‘๋‹ต ์‹œ๊ฐ„์„ ๋‹จ์ถ•์‹œ์ผฐ์Šต๋‹ˆ๋‹ค.

์ฃผ์š” ์„ฑ๊ณผ

  • ์˜ˆ์•ฝ์ƒํƒœ๋ณ„ ์กฐํšŒ์™€ ํŠน์ • ์ผ์ •์˜ ์ขŒ์„ ์กฐํšŒ์—์„œ ๊ฐ๊ฐ 63%์™€ 70% ์˜ ์„ฑ๋Šฅ ํ–ฅ์ƒ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ํŠน์ • ์˜ˆ์•ฝ์— ๋Œ€ํ•œ ๋ชจ๋“  ์ขŒ์„ ์กฐํšŒ์—์„œ๋Š” ์˜ˆ์ƒ๊ณผ ๋‹ฌ๋ฆฌ ์ธ๋ฑ์Šค ์ ์šฉ ํ›„ ์„ฑ๋Šฅ์ด ์˜คํžˆ๋ ค ๊ฐ์†Œํ•˜๊ธฐ๋„ ํ–ˆ์Šต๋‹ˆ๋‹ค.

์„ฑ๋Šฅ ๊ฐœ์„  ๋ถ„์„ ๋ฐ ์ „๋žต


์‹œ์Šคํ…œ ์ „์ œ

  • ์ฝ˜์„œํŠธ 1๊ฐœ ๋‹น 10๊ฐœ์˜ ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ์กด์žฌํ•˜๊ณ , ๊ฐ ์Šค์ผ€์ค„๋Ÿฌ์—๋Š” 50๊ฐœ์˜ ์ขŒ์„์ด ๋ฐฐ์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • seat ํ…Œ์ด๋ธ”์—๋Š” ์ด 720,773๊ฐœ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.
  • ์ธ๊ธฐ ์ฝ˜์„œํŠธ ์กฐํšŒ ๊ธฐ์ค€์€ ๊ฒฐ์ œ๊ฐ€ ์™„๋ฃŒ๋œ ์ผ์ •๊ธฐ๊ฐ„๋™์•ˆ ์ขŒ์„ ์˜ˆ์•ฝ ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ๋งŽ์€ ์ฝ˜์„œํŠธ ์ˆœ์œผ๋กœ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค.

์ธ๋ฑ์Šค ์ ์šฉ ์ „ ์ž์ฃผ ์กฐํšŒ๋˜๋Š” ์ฟผ๋ฆฌ ๋ถ„์„

seat ํ…Œ์ด๋ธ”์—์„œ ์ž์ฃผ ์‹คํ–‰๋˜๋Š” ์ฟผ๋ฆฌ ์œ ํ˜•์„ ํŒŒ์•…ํ•ฉ๋‹ˆ๋‹ค.

  • ์˜ˆ์•ฝ์ƒํƒœ๋ณ„ ์กฐํšŒ
    • ์ฟผ๋ฆฌ: SELECT * FROM hhplus_study.seat WHERE status = 'RESERVED'
    • ์‹คํ–‰์‹œ๊ฐ„: 491ms (์‹คํ–‰: 432ms, ๊ฐ€์ ธ์˜ค๊ธฐ: 59ms)
    • ๊ฒฐ๊ณผ: 107๊ฐœ์˜ ํ–‰ ์กฐํšŒ.
  • ํŠน์ • ์˜ˆ์•ฝ์— ๋Œ€ํ•œ ๋ชจ๋“  ์ขŒ์„ ์กฐํšŒ
    • ์ฟผ๋ฆฌ: SELECT * FROM hhplus_study.seat WHERE reservation_id = 57
    • ์‹คํ–‰์‹œ๊ฐ„: 474ms (์‹คํ–‰: 409ms, ๊ฐ€์ ธ์˜ค๊ธฐ: 65ms)
    • ๊ฒฐ๊ณผ: 50๊ฐœ์˜ ํ–‰ ์กฐํšŒ.
  • ํŠน์ • ์ผ์ •์˜ ์ขŒ์„ ์กฐํšŒ
    • ์ฟผ๋ฆฌ: SELECT * FROM hhplus_study.seat WHERE schedule_id = 10
    • ์‹คํ–‰์‹œ๊ฐ„: 479ms (์‹คํ–‰: 398ms, ๊ฐ€์ ธ์˜ค๊ธฐ: 81ms)
    • ๊ฒฐ๊ณผ: 50๊ฐœ์˜ ํ–‰ ์กฐํšŒ.

์ธ๋ฑ์Šค ์ ์šฉ ์ „ ์ฟผ๋ฆฌ ์‹คํ–‰ ๊ณ„ํš ๋ถ„์„

๊ฐ ์ฟผ๋ฆฌ์— ๋Œ€ํ•ด EXPLAIN ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹คํ–‰ ๊ณ„ํš์„ ๋ถ„์„ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ „์ฒด ์กฐํšŒ ๋ฐ ๋ถ„์„

EXPLAIN ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ฉด, ์ฟผ๋ฆฌ๊ฐ€ ํ’€ ์Šค์บ”์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
ํ’€ ์Šค์บ”์€ ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ํ–‰์„ ์ˆœ์ฐจ์ ์œผ๋กœ ํƒ์ƒ‰ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ, ๋ฐ์ดํ„ฐ ์–‘์ด ๋งŽ์„์ˆ˜๋ก ์„ฑ๋Šฅ์ด ์ €ํ•˜๋ฉ๋‹ˆ๋‹ค.

์˜ˆ์•ฝ ์ƒํƒœ๋ณ„ ์กฐํšŒ ๋ฐ ๋ถ„์„

์˜ˆ์•ฝ ์ƒํƒœ๋ณ„ ์กฐํšŒ ์‹œ status = 'RESERVED' ์กฐ๊ฑด์„ ์ ์šฉํ•œ ์ฟผ๋ฆฌ๊ฐ€ ํ’€ ์Šค์บ”์„ ์ˆ˜ํ–‰ํ•˜๋ฉฐ, ์•ฝ 71๋งŒ ๊ฐœ์˜ ํ–‰์„ ์Šค์บ”ํ•˜๊ณ  ์žˆ์–ด ์„ฑ๋Šฅ์ด ๋น„ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค.

์ธ๋ฑ์Šค ์ ์šฉ

์ž์ฃผ ์กฐํšŒ๋˜๋Š” ์ปฌ๋Ÿผ๋“ค์— ๋Œ€ํ•ด ์ธ๋ฑ์Šค๋ฅผ ์ถ”๊ฐ€ํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.

  • ์ขŒ์„
    • schedule_id
    • status
    • reservation_id
    • schedule_id, status
  • ์ฝ˜์„œํŠธ ์ผ์ •
    • concert_id
  • ์˜ˆ์•ฝ
    • reservation_status, reserved_at

์ธ๋ฑ์Šค ์ ์šฉ ํ›„ ์ „์ฒด ์กฐํšŒ ๋ฐ ๋ถ„์„

  • ์˜ˆ์•ฝ์ƒํƒœ๋ณ„ ์กฐํšŒ

    • ์ฟผ๋ฆฌ: SELECT * FROM hhplus_study.seat WHERE status = 'RESERVED'
    • ์ธ๋ฑ์Šค ์ ์šฉ ์ „ ์‹คํ–‰์‹œ๊ฐ„: 491ms (์‹คํ–‰: 432ms, ๊ฐ€์ ธ์˜ค๊ธฐ: 59ms)
    • ์ธ๋ฑ์Šค ์ ์šฉ ํ›„ ์‹คํ–‰์‹œ๊ฐ„: 178ms
    • ์‹คํ–‰์‹œ๊ฐ„ ๊ฐœ์„ : 491ms์—์„œ 178ms๋กœ, ์•ฝ 63% ๊ฐœ์„ ๋จ.
      ์ธ๋ฑ์Šค๋ฅผ ์ ์šฉํ•˜์—ฌ ์ƒํƒœ๋ณ„ ์กฐํšŒ๊ฐ€ ํ›จ์”ฌ ๋นจ๋ผ์กŒ์Šต๋‹ˆ๋‹ค.
  • ํŠน์ • ์˜ˆ์•ฝ์— ๋Œ€ํ•œ ๋ชจ๋“  ์ขŒ์„ ์กฐํšŒ

    • ์ฟผ๋ฆฌ: SELECT * FROM hhplus_study.seat WHERE reservation_id = 57
    • ์ธ๋ฑ์Šค ์ ์šฉ ์ „ ์‹คํ–‰์‹œ๊ฐ„: 474ms (์‹คํ–‰: 409ms, ๊ฐ€์ ธ์˜ค๊ธฐ: 65ms)
    • ์ธ๋ฑ์Šค ์ ์šฉ ํ›„ ์‹คํ–‰์‹œ๊ฐ„: 676ms
    • ์‹คํ–‰์‹œ๊ฐ„ ๋ณ€ํ™”: ์ธ๋ฑ์Šค ์ ์šฉ ํ›„ ์‹คํ–‰์‹œ๊ฐ„์ด 676ms๋กœ ์˜คํžˆ๋ ค ๋Š˜์–ด๋‚˜๊ฑฐ๋‚˜ ๋น„์Šทํ–ˆ์Šต๋‹ˆ๋‹ค. reservation_id๊ฐ€ ์ธ๋ฑ์Šค์— ์ถ”๊ฐ€๋˜์–ด์žˆ๋Š”๋ฐ๋„ ์„ฑ๋Šฅ ๋ณ€ํ™”๊ฐ€ ์—†๋Š” ์ด์œ ๋Š” Explain ๋ถ„์„๊ธ€์—์„œ ์„ค๋ช…๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.
  • ํŠน์ • ์ผ์ •์˜ ์ขŒ์„ ์กฐํšŒ

    • ์ฟผ๋ฆฌ: SELECT * FROM hhplus_study.seat WHERE schedule_id = 10
    • ์ธ๋ฑ์Šค ์ ์šฉ ์ „ ์‹คํ–‰์‹œ๊ฐ„: 479ms (์‹คํ–‰: 398ms, ๊ฐ€์ ธ์˜ค๊ธฐ: 81ms)
    • ์ธ๋ฑ์Šค ์ ์šฉ ํ›„ ์‹คํ–‰์‹œ๊ฐ„: 146ms
    • ์‹คํ–‰์‹œ๊ฐ„ ๊ฐœ์„ : 479ms์—์„œ 146ms๋กœ, ์•ฝ 70% ๊ฐœ์„ ๋จ. ์ผ์ • ID์— ๋”ฐ๋ฅธ ์กฐํšŒ๊ฐ€ ์ธ๋ฑ์Šค - ๋•๋ถ„์— ํ›จ์”ฌ ๋นจ๋ผ์กŒ์Šต๋‹ˆ๋‹ค.

์ธ๋ฑ์Šค ์ ์šฉ ํ›„ ์ฟผ๋ฆฌ ์‹คํ–‰ ๊ณ„ํš ๋ถ„์„

๊ฐ ์ฟผ๋ฆฌ์— ๋Œ€ํ•ด EXPLAIN ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹คํ–‰ ๊ณ„ํš์„ ๋ถ„์„ํ–ˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ์•ฝ ์ƒํƒœ๋ณ„ ์กฐํšŒ ๋ฐ ๋ถ„์„


status = 'RESERVED' ์กฐ๊ฑด์„ ์‚ฌ์šฉํ•˜์—ฌ ์ธ๋ฑ์Šค๊ฐ€ ์ ์šฉ๋œ ํ…Œ์ด๋ธ”์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ–ˆ์„ ๋•Œ, ์‚ฌ์šฉ๊ฐ€๋Šฅํ•œ ์ธ๋ฑ์Šค์ธ idx_status๋ฅผ key๋กœ ์‚ฌ์šฉํ•˜์˜€๊ณ , Using index condition์ด ์ถ”๊ฐ€๋˜์–ด ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•œ ์กฐ๊ฑด ํ•„ํ„ฐ๋ง์ด ์ ์šฉ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

ํŠน์ • ์˜ˆ์•ฝ์— ๋Œ€ํ•œ ๋ชจ๋“  ์ขŒ์„ ์กฐํšŒ ๋ฐ ๋ถ„์„


reservation_id๋งŒ ์กฐํšŒํ•˜๋Š” ์ฟผ๋ฆฌ์—์„œ๋Š” ์ธ๋ฑ์Šค๊ฐ€ ์ ์šฉ๋˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ํ•ด๋‹น ์ธ๋ฑ์Šค๊ฐ€ schedule_id์™€ reservation_id ๋‘ ์ปฌ๋Ÿผ์— ๋Œ€ํ•ด ๋ณตํ•ฉํ‚ค๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ฟผ๋ฆฌ๊ฐ€ reservation_id๋งŒ ์กฐ๊ฑด์œผ๋กœ ์‚ฌ์šฉํ•˜๋ฉด, schedule_id๊ฐ€ ํฌํ•จ๋œ ๋ณตํ•ฉ ์ธ๋ฑ์Šค๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
๊ทธ ๊ฒฐ๊ณผ, MySQL์€ ํ’€ ์Šค์บ”์„ ์ง„ํ–‰ํ•˜๊ฒŒ ๋˜๋ฉฐ ์„ฑ๋Šฅ์ด ์ €ํ•˜๋ฉ๋‹ˆ๋‹ค.
์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” reservation_id์— ๋Œ€ํ•ด์„œ ๋ณ„๋„์˜ ๋‹จ์ผ ์ธ๋ฑ์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜, schedule_id๋ฅผ ํฌํ•จํ•œ ์กฐ๊ฑด์ด ์ถ”๊ฐ€๋˜๋ฉด ๋ณตํ•ฉ ์ธ๋ฑ์Šค๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฃผ๊ฐ„ ์ธ๊ธฐ ์ฝ˜์„œํŠธ ์กฐํšŒ ๋ถ„์„ ๋ฐ ์„ฑ๋Šฅ ์ตœ์ ํ™”

์ธ๋ฑ์Šค ์ ์šฉ ์ „ ์ฃผ๊ฐ„ ์ธ๊ธฐ ์ฝ˜์„œํŠธ ์กฐํšŒ


์ธ๋ฑ์Šค ์ ์šฉ ์ „ ์‹คํ–‰์‹œ๊ฐ„: 418ms (์‹คํ–‰: 387ms, ๊ฐ€์ ธ์˜ค๊ธฐ: 31ms)

์ธ๋ฑ์Šค ์ ์šฉ ํ›„ ์ฃผ๊ฐ„ ์ธ๊ธฐ ์ฝ˜์„œํŠธ ์กฐํšŒ


์ธ๋ฑ์Šค ์ ์šฉ ํ›„ ์‹คํ–‰์‹œ๊ฐ„: 60ms (์‹คํ–‰: 26ms, ๊ฐ€์ ธ์˜ค๊ธฐ: 34ms)

๋ถ„์„

  • ์„œ๋ธŒ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „ ์‹คํ–‰์†๋„๊ฐ€ ๋Š๋ ค์ง„ ๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌ: ์ธ๋ฑ์Šค๋ฅผ ์„ค์ •ํ•˜์˜€๋Š”๋ฐ๋„ ์ธ๋ฑ์Šค ์„ค์ • ์ „ ์ฟผ๋ฆฌ๊ฐ€ ๋” ๋น ๋ฅธ ํ˜„์ƒ์„ ๋ฐœ๊ฒฌํ•˜์˜€์Šต๋‹ˆ๋‹ค. EXPLAIN ANALYZE๋กœ ๋ถ„์„ํ•ด๋ณด๋‹ˆ ์ค‘์ฒฉ ๋ฃจํ”„ ์กฐ์ธ์—์„œ seat_3 ํ…Œ์ด๋ธ”์„ ํ’€ ์Šค์บ” ํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ•˜์—ฌ ์„œ๋ธŒ์ฟผ๋ฆฌ๋กœ ์ˆ˜์ •ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • ์„œ๋ธŒ์ฟผ๋ฆฌ๋กœ ํ•„ํ„ฐ๋ง : reservation_2 ํ…Œ์ด๋ธ”์—์„œ reservation_status = 'CONFIRMED'์™€ reserved_at ๋ฒ”์œ„ ์กฐ๊ฑด์— ๋งž๋Š” ๋ฐ์ดํ„ฐ๋งŒ ๋จผ์ € ํ•„ํ„ฐ๋งํ•˜์˜€๊ณ , ์„œ๋ธŒ์ฟผ๋ฆฌ์—์„œ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋งŒ ์ถ”์ถœํ•˜์—ฌ seat_3 ํ…Œ์ด๋ธ”๊ณผ ์กฐ์ธํ•˜์˜€๊ณ  ์กฐํšŒ ์†๋„๊ฐ€ ํ–ฅ์ƒ๋œ ๊ฒƒ์„ ํ™•์ธํ•˜์˜€์Šต๋‹ˆ๋‹ค.

๋งˆ๋ฌด๋ฆฌ

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

profile
์–ด์ œ์˜ ๋‚˜๋ณด๋‹ค ์„ฑ์žฅํ•œ ์‚ฌ๋žŒ์ด ๋  ์ˆ˜ ์žˆ๋„๋ก ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€

๊ด€๋ จ ์ฑ„์šฉ ์ •๋ณด