5 ๋ถ„ ์†Œ์š”

์šฐ๊ธฐ์˜ MySQL ์•„ํ‚คํ…์ฒ˜

[10๋ถ„ ํ…Œ์ฝ”ํ†ก] ๐Ÿ”ซ ์šฐ๊ธฐ์˜ MySQL แ„‹แ…กแ„แ…ตแ„แ…ฆแ†จแ„Žแ…ฅ ๋ฅผ ๋“ฃ๊ณ  ์ •๋ฆฌํ•จ.

MySQL ์•„ํ‚คํ…์ณ

Untitled

MySQL ์ ‘์† ํด๋ผ์ด์–ธํŠธ

๋Œ€๋ถ€๋ถ„์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์— ๋Œ€ํ•ด ์ ‘์† API๋ฅผ ์ œ๊ณตํ•œ๋‹ค. ์‰˜์—์„œ๋„ ์‰˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ†ตํ•ด MySQ์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋”ฐ.

MySQL ์—”์ง„

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

MySQL ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„

  • ๋ฐ์ดํ„ฐ๋ฅผ ์‹ค์ œ๋กœ ๋””์Šคํฌ์— ์ €์žฅํ•˜๊ฑฐ๋‚˜ ๋””์Šคํฌ์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜ค๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.
  • ์˜ตํ‹ฐ๋งˆ์ด์ €๊ฐ€ ์ž‘์„ฑํ•œ ์‹คํ–‰ ๊ณ„ํš์— ๋”ฐ๋ผ์„œ ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์„ ์ ์ ˆํžˆ ํ˜ธ์ถœํ•ด์„œ ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.
  • MySQL์—”์ง„์ด ์Šคํ† ๋ฆฌ์ง€๋ฅผ ํ˜ธ์ถœํ• ๋•Œ ์‚ฌ์šฉํ•˜๋Š” API๋ฅผ ํ•ธ๋“ค๋Ÿฌ API๋ผ๊ณ  ํ•œ๋‹ค. ํ•ธ๋“ค๋Ÿฌ API๋Š” ์ปค์Šคํ…€ ๊ตฌํ˜„ ๊ฐ€๋Šฅํ•˜์—ฌ ๋‚˜๋งŒ์˜ ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์„ ์„ค๊ณ„ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

์šด์˜์ฒด์ œ, ํ•˜๋“œ์›จ์–ด

์‹ค์ œ ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ์™€ ๋กœ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ํŒŒ์ผ๋กœ ์ €์žฅํ•˜๋Š” ์šด์˜์ฒด์ œ ํŒŒ์ผ ์‹œ์Šคํ…œ๊ณผ ํ•˜๋“œ์›จ์–ด์ด๋‹ค.

์ฟผ๋ฆฌ์˜ ์‹คํ–‰ ๊ณผ์ •

Untitled

์ฟผ๋ฆฌ ์บ์‹œ

  • SQL ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์บ์‹ฑํ•˜๋Š” ์—ญํ• 
  • ๋™์ผ SQL ์‹คํ–‰ ์‹œ ์ด์ „ ๊ฒฐ๊ณผ ์ฆ‰์‹œ ๋ฐ˜ํ™˜
  • ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด ์บ์‹ฑ๋œ ๋ฐ์ดํ„ฐ ์‚ญ์ œ ํ•„์š”(๋™์‹œ ์ฒ˜๋ฆฌ ์„ฑ๋Šฅ ์ €ํ•˜)
  • MySQL 8.0๋ถ€ํ„ฐ ์™„์ „ํžˆ ์ œ๊ฑฐ๋จ

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

์ฟผ๋ฆฌ ํŒŒ์„œ

Untitled

  • SQL ๋ฌธ์žฅ์„ ํ† ํฐ์œผ๋กœ ์ชผ๊ฐœ์„œ ํŠธ๋ฆฌ๋กœ ๋งŒ๋“ฆ
  • ์ด ๊ณผ์ •์—์„œ ์ฟผ๋ฆฌ ๋ฌธ์žฅ์˜ ๊ธฐ๋ณธ ๋ฌธ๋ฒ• ์˜ค๋ฅ˜๋ฅผ ์ฒดํฌ

    ์ฟผ๋ฆฌ ํŒŒ์„œ๋Š” sql ๋ช…๋ น์˜ syntax ์˜ค๋ฅ˜๋ฅผ ๊ฒ€์ถœํ•œ๋‹ค ๊ทธ๋ฆฌ๊ณ  sql ๋ฌธ์žฅ์„ ์˜๋ฏธ์žˆ๋Š” ๋‹จ์œ„์˜ ํ† ํฐ์œผ๋กœ ์ชผ๊ฐ  ๋‹ค์Œ์— ํŠธ๋ฆฌ๋กœ ๋งŒ๋“ ๋‹ค. ์ด ํŠธ๋ฆฌ๋ฅผ parse ํŠธ๋ฆฌ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. MySQL์€ ๋‚ด๋ถ€์ ์œผ๋กœ ์ด parse ํŠธ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.

์ „์ฒ˜๋ฆฌ๊ธฐ

  • Parse Tree๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ SQL์˜ ๋ฌธ์žฅ ๊ตฌ์กฐ๋ฅผ ์ฒดํฌ
  • Parse Tree์˜ ํ† ํฐ์ด ์œ ํšจํ•œ์ง€ ์ฒดํฌ

์ „์ฒ˜๋ฆฌ๊ธฐ(Preprocessor)๋Š” ์ฟผ๋ฆฌ ํŒŒ์„œ๊ฐ€ ๋งŒ๋“  Parse Tree๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ, ์ฟผ๋ฆฌ ๋ฌธ์žฅ์— ๊ตฌ์กฐ์ ์ธ ๋ฌธ์ œ๋ฅผ ๊ฒ€์‚ฌํ•œ๋‹ค. ํŒŒ์Šค ํŠธ๋ฆฌ์˜ ํ† ํฐ์„ ํ•˜๋‚˜์”ฉ ๊ฒ€์‚ฌํ•˜๋ฉด์„œ ํ† ํฐ์— ํ•ด๋‹นํ•˜๋Š” ํ…Œ์ด๋ธ” ์ด๋ฆ„์ด๋‚˜ ์นผ๋Ÿผ ๋“ฑ์ด ์‹ค์ œ๋กœ ์กด์žฌํ•˜๋Š”์ง€ ์ฒดํฌํ•˜๊ณ  ์ ‘๊ทผ ๊ถŒํ•œ๋„ ์ฒดํฌํ•œ๋‹ค.

์˜ตํ‹ฐ๋งˆ์ด์ €

  • SQL ์‹คํ–‰์„ ์ตœ์ ํ™”ํ•ด์„œ ์‹คํ–‰ ๊ณ„ํš์„ ์ˆ˜๋ฆฝ
  • ๊ทœ์น™ ๊ธฐ๋ฐ˜ ์ตœ์ ํ™”
    • ์˜ตํ‹ฐ๋งˆ์ด์ €์— ๋‚ด์žฅ๋œ ์šฐ์„ ์ˆœ์œ„์— ๋”ฐ๋ผ ์‹คํ–‰ ๊ณ„ํš ์ˆ˜๋ฆฝ
  • ๋น„์šฉ ๊ธฐ๋ฐ˜ ์ตœ์ ํ™”
    • ์ž‘์—…์˜ ๋น„์šฉ๊ณผ ๋Œ€์ƒ ํ…Œ์ด๋ธ”์˜ ํ†ต๊ณ„ ์ •๋ณด๋ฅผ ํ™œ์šฉํ•ด์„œ ์‹คํ–‰ ๊ณ„ํš ์ˆ˜๋ฆฝ

์ฟผ๋ฆฌ ์‹คํ–‰ ๊ณ„ํš์„ ๋งŒ๋“ฆ

์ฟผ๋ฆฌ ์‹คํ–‰ ์—”์ง„

  • ์˜ตํ‹ฐ๋งˆ์ด์ €๊ฐ€ ๋งŒ๋“  ์‹คํ–‰ ๊ณ„ํš๋Œ€๋กœ ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์„ ํ˜ธ์ถœํ•ด์„œ ๋ ˆ์ฝ”๋“œ๋ฅผ ์ฝ๊ณ  ์”€.

์Šคํ† ๋ฆฌ์ง€ ์—”์ง„

  • ์ฟผ๋ฆฌ ์‹คํ–‰ ์—”์ง„์ด ์š”์ฒญํ•˜๋Š” ๋Œ€๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋””์Šคํฌ๋กœ ์ €์žฅํ•˜๊ณ  ์ฝ์Œ
  • ํ•ธ๋“ค๋Ÿฌ API์— ์˜ํ•ด ๋™์ž‘(ํ•ธ๋“ค๋Ÿฌ๋ผ๊ณ ๋„ ๋ถˆ๋ฆผ)
  • ํ”Œ๋Ÿฌ๊ทธ์ธ ํ˜•ํƒœ๋กœ ์ œ๊ณต, ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ๊ฒƒ์„ ์„ ํƒ ๊ฐ€๋Šฅ

    (๋‹จ์  : ํ”Œ๋Ÿฌ๊ทธ์ธ๋ผ๋ฆฌ๋Š” ์„œ๋กœ ํ†ต์‹ ํ•  ์ˆ˜ ์—†๊ณ , ํ”Œ๋Ÿฌ๊ทธ์ธ์€ MySQL ์„œ๋ฒ„์˜ ๋ณ€์ˆ˜๋‚˜ ํ•จ์ˆ˜๋ฅผ ์ง์ ‘ ํ˜ธ์ถœํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์บก์Аํ™”๋ฅผ ์œ„๋ฐ˜ํ•œ๋‹ค) โ†’ MySQL 8.0๋ถ€ํ„ฐ๋Š” ์ปดํฌ๋„ŒํŠธ ์ด๋ฅผ ๊ฐœ์„ ํ•œ ์•„ํ‚คํ…์ณ๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

  • ๋Œ€ํ‘œ์ ์œผ๋กœ InnoDb, MyISAM ๋“ฑ์ด ์žˆ๋‹ค.

InnoDB ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„, ํŠน์ง•๋“ค

Untitled

  • Primary Key์— ์˜ํ•œ ํด๋Ÿฌ์Šคํ„ฐ๋ง
  • ํŠธ๋žœ์žญ์…˜ ์ง€์› (MVCC, ๋ฆฌ๋‘๋กœ๊ทธ & ์–ธ๋‘ ๋กœ๊ทธ, ๋ ˆ์ฝ”๋“œ ๋‹จ์œ„ ์ž ๊ธˆ)
  • InnoDB ๋ฒ„ํผํ’€ & ์–ด๋Œ‘ํ‹ฐ๋ธŒ ํ•ด์‹œ ์ธ๋ฑ์Šค

1. Primary Key ์— ์˜ํ•œ ํด๋Ÿฌ์Šคํ„ฐ๋ง

Untitled

  • ๋ ˆ์ฝ”๋“œ๋ฅผ PK ์ˆœ์œผ๋กœ ์ •๋ ฌํ•ด์„œ ์ €์žฅ
  • PK ์ธ๋ฑ์Šค ์ž๋™ ์ƒ์„ฑ

PK ๊ธฐ์ค€์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ โ€˜์ •๋ ฌโ€™ ํ•˜์—ฌ ๋ฌถ์—ฌ์„œ ํ•œ ๊ตฐ๋ฐ ์ €์žฅ๋˜๊ธฐ ๋•Œ๋ฌธ์— PK ๊ธฐ๋ฐ˜ ๋ฒ”์œ„ ๊ฒ€์ƒ‰์ด ๋งค์šฐ ๋น ๋ฅด๋‹ค.

๋‹จ์ ์œผ๋ก , ์“ฐ๊ธฐ ์„ฑ๋Šฅ์€ ๋งค์šฐ ์ €ํ•˜๋œ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๋ชจ๋“  ๋ ˆ์ฝ”๋“œ๋ฅผ ์žฌ์ •๋ ฌํ•˜๋Š” ๋น„์šฉ์ด ์ˆ˜๋ฐ˜๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์ผ๋ฐ˜์ ์ธ ์›น ์„œ๋น„์Šค๋Š” ์“ฐ๊ธฐ๋ณด๋‹ค ์ฝ๊ธฐ ์š”์ฒญ์ด ํ›จ์”ฌ ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— ์“ฐ๊ธฐ ์„ฑ๋Šฅ์„ ํฌ๊ธฐํ•˜๊ณ  ์ฝ๊ธฐ ์„ฑ๋Šฅ์„ ์–ป๋Š” ํด๋Ÿฌ์Šคํ„ฐ๋ง์„ ํ•˜๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ด๋‹ค.

์ฐธ๊ณ ๋กœ InnoDB์—์„œ๋Š” Pk ๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ๋‚ด๋ถ€์ ์œผ๋กœ PK๋ฅผ ์ž๋™์ƒ์„ฑํ•ด์„œ ํด๋Ÿฌ์Šคํ„ฐ๋งํ•œ๋‹ค. ๋‚ด๋ถ€์ ์œผ๋กœ ์ƒ์„ฑ๋œ PK ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์“ธ ์ˆ˜ ์—†๋‹ค. ๋”ฐ๋ผ์„œ InnoDB์—์„œ ํ…Œ์ด๋ธ”์„ ์„ค๊ณ„ํ•  ๋•Œ์—๋Š” PK๋ฅผ ์ง์ ‘ ์„ค์ •ํ•ด์ฃผ๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

ํŠธ๋žœ์žญ์…˜ - MVCC(Multi Version Concurrency Control)

InnoDB๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ Commit, Rollback ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋ฉฐ ์ด์— ๋”ํ•ด MVCC๋ผ๋Š” ๊ธฐ๋Šฅ๋„ ์ œ๊ณตํ•œ๋‹ค.

InnoDB ๋ฒ„ํผํ’€ : ๋ณ€๊ฒฝ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋””์Šคํฌ์— ๋ฐ˜์˜ํ•˜๊ธฐ ์ „๊นŒ์ง€ ์ž ์‹œ ๋ฒ„ํผ๋ง ํ•˜๋Š” ๊ณต๊ฐ„

์–ธ๋‘๋กœ๊ทธ : ๋ณ€๊ฒฝ๋˜๊ธฐ ์ด์ „ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐฑ์—… ํ•ด๋‘๋Š” ๊ณต๊ฐ„

์˜ˆ์‹œ)

Untitled

๋จผ์ € insert query๋ฅผ ๋‚ ๋ฆฌ๊ณ  ์ฟผ๋ฆฌ ์ปค๋ฐ‹์„ ํ•œ ์ƒํƒœ์ด๋‹ค.

Untitled

์ด์ƒํƒœ์—์„œ ์œ ์žฌ์„์˜ ์ทจ๋ฏธ๋ฅผ ์ฝ”๋”ฉ์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” UPDATE query๋ฅผ ๋‚ ๋ฆฐ๋‹ค.

๋ฒ„ํผ ํ’€์— ์žˆ๋Š” ์œ ์žฌ์„ ๋ ˆ์ฝ”๋“œ์˜ ์ทจ๋ฏธ๋Š” ๊ทธ ์ฆ‰์‹œ ์ฝ”๋”ฉ์œผ๋กœ ๋ณ€๊ฒฝ๋จ๊ณผ ๋™์‹œ์— ๋ณ€๊ฒฝ ์ด์ „ ์ทจ๋ฏธ์ธ ๋…์„œ๊ฐ€ ์–ธ๋‘๋กœ๊ทธ์— ๋ณต์‚ฌ๋œ๋‹ค.

Untitled

์ด ์ƒํƒœ์—์„œ ์œ ์žฌ์„์„ ์กฐํšŒํ•˜๋ฉด ์ทจ๋ฏธ ์นผ๋Ÿผ์€ ๋ฌด์Šจ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ• ๊นŒ??

โ†’ ์ •๋‹ด์€ ๋””๋น„์— ์„ค์ •๋œ ํŠธ๋žœ์žญ์…˜ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋‹ค ์ด๋‹ค.

ํŠธ๋žœ์žญ์…˜ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์ด ๋งŒ์ผ READ_UNCOMMITED ๋ผ๋ฉด ์ทจ๋ฏธ๊ฐ€ ์ฝ”๋”ฉ์ธ ์œ ์žฌ์„ ๋ ˆ์ฝ”๋“œ๊ฐ€ ๋ฒ„ํผํ’€์—์„œ ์กฐํšŒ๋œ๋‹ค. ๋งŒ์•ฝ ํŠธ๋žœ์žญ์…˜ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์ด READ_COMMITED, ๋˜๋Š” REPEATABLE_READ ๋˜๋Š” SERIALIZABLE์ด๋ผ๋ฉด ์–ธ๋‘ ๋กœ๊ทธ์— ์žˆ๋Š” ๋ณ€๊ฒฝ๋˜๊ธฐ ์ด์ „ ๋ฐ์ดํ„ฐ์ธ ์ทจ๋ฏธ๊ฐ€ ๋…์„œ์ธ ์œ ์žฌ์„ ๋ ˆ์ฝ”๋“œ๋ฅผ ์กฐํšŒํ•œ๋‹ค.

์ด๊ฒƒ์ด MVCC multi version concurrency control์ด๋‹ค. ์˜ˆ์‹œ์—์„œ๋Š” ๋‹ค์–‘ํ•œ ๋ฒ„์ „์ด(์ฝ”๋”ฉ, ๋…์„œ)๊ฐ€ ๋ฒ„ํผํ’€๊ณผ ์–ธ๋‘๋กœ๊ทธ์—์„œ ๋™์‹œ์— ํŠธ๋žœ์žญ์…˜ ๊ฒฉ๋ฆฌ ๋ ˆ๋ฒจ์— ๋”ฐ๋ผ ๊ด€๋ฆฌ๋˜๊ณ  ์žˆ๋‹ค.

์ด ๊ธฐ๋Šฅ ๋•์— ๋ ˆ์ฝ”๋“œ์— ์ž ๊ธˆ์„ ๊ฑธ์ง€ ์•Š๊ณ ๋„ ํŠธ๋žœ์žญ์…˜ ๊ฒฉ๋ฆฌ ๋ ˆ๋ฒจ์— ๋”ฐ๋ผ ์ผ๊ด€๋œ ์ฝ๊ธฐ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค

ํŠธ๋žœ์žญ์…˜ - ์–ธ๋‘ ๋กœ๊ทธ์™€ ๋ฆฌ๋‘ ๋กœ๊ทธ

Untitled

์–ธ๋‘๋กœ๊ทธ์—๋Š” ๋ณ€๊ฒฝ๋˜๊ธฐ ์ด์ „ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐฑ์—…ํ•ด์„œ ํŠธ๋žœ์žญ์…˜์„ ๋ณด์žฅํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ๋กค๋ฐฑ์„ ํ•œ๋‹ค๋ฉด ์–ธ๋‘๋กœ๊ทธ์— ๋ฐฑ์—…๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ทธ๋Œ€๋กœ ๋ณต์›ํ•˜๋ฉด ๋œ๋‹ค.

ํŠธ๋žœ์žญ์…˜ ๊ฒฉ๋ฆฌ์ˆ˜์ค€๋„ ๋ณด์žฅํ•œ๋‹ค.(์˜ˆ์‹œ์—์„œ์ฒ˜๋Ÿผ)

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

ํŠธ๋žœ์žญ์…˜ - ๋ ˆ์ฝ”๋“œ ๋‹จ์œ„ ์ž ๊ธˆ

์ฐธ๊ณ ํ•˜๋ฉด ์ข‹์€ ๋งํฌ

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•  ๋•Œ์—๋Š” ๋™์‹œ์„ฑ ๋ฌธ์ œ๋ฅผ ๊ณ ๋ คํ•ด์„œ ๋ ˆ์ฝ”๋“œ์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ ๋ง‰๋Š”๋‹ค(๋ฝ, ์ž ๊ธˆ).

์ด๋…ธ๋””๋น„๋Š” ๋ ˆ์ฝ”๋“œ ๋‹จ์œ„๋กœ ์ž ๊ธˆ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ๋•Œ๋ฌธ์— ๋™์‹œ์ฒ˜๋ฆฌ ์„ฑ๋Šฅ์ด ์ข‹๋‹ค

โ†’์‹ค์ œ๋กœ๋Š” ๋ ˆ์ฝ”๋“œ ๊ทธ ์ž์ฒด๋ฅผ ์ž ๊ทธ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์ธ๋ฑ์Šค ๋ ˆ์ฝ”๋“œ๋ฅผ ์ž ๊ทธ๋Š” ๊ฒƒ์ด๋‹ค.

์˜ˆ์‹œ)

Untitled

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

Untitled

๋งŒ์ผ ์„ฑ์”จ ์ธ๋ฑ์Šค๊ฐ€ ์—†๋”๋ผ๋ฉด??

๋ฐ•๋ณ‘์šฑ ๋ ˆ์ฝ”๋“œ๋ฅผ ์ฐพ์•„๋‚ด๊ธฐ ์œ„ํ•ด์„œ 5000๋ช… ํšŒ์›์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋‘ ํ’€์Šค์บ” ํ•˜๊ฒŒ ๋œ๋‹ค. ์ฆ‰ 5000๊ฐœ์˜ ๋ ˆ์ฝ”๋“œ๊ฐ€ ์ „๋ถ€ ์ž ๊ธฐ๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

๋งŒ์ผ ์„ฑ์”จ์™€ ์ด๋ฆ„ ๋ณตํ•ฉ ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ–ˆ๋‹ค๋ฉด ๋ฐ•๋ณ‘์šฑ ๋ ˆ์ฝ”๋“œ ํ•œ๊ฐœ๋งŒ ์ž ๊ทธ๊ฒŒ ๋์„ ๊ฒƒ์ด๋‹ค

Untitled

์ธ๋ฑ์Šค๋ฅผ ์–ด๋–ป๊ฒŒ ์„ค์ •ํ•˜๋Š”์ง€์— ๋”ฐ๋ผ ๋ ˆ์ฝ”๋“œ์˜ ์ž ๊ธˆ ๋ฒ”์œ„๊ฐ€, ์ฆ‰ ๋™์‹œ์ฒ˜๋ฆฌ ์„ฑ๋Šฅ์— ์ง์ ‘์ ์ธ ์˜ํ–ฅ์ด ๊ฐ€๋ฏ€๋กœ ์ด๋…ธ๋””๋น„๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ์ธ๋ฑ์Šค๋ฅผ ์‹ ์ค‘ํ•˜๊ฒŒ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค

๋ฒ„ํผํ’€

Untitled

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

๋ฐ์ดํ„ฐ ์บ์‹ฑ

  • ๋ฒ„ํผํ’€์€ sql ์š”์ฒญ์˜ ๊ฒฐ๊ณผ๋ฅผ ์ผ์ •ํ•œ ํฌ๊ธฐ์˜ ํŽ˜์ด์ง€ ๋‹จ์œ„๋กœ ์บ์‹ฑํ•œ๋‹ค.
  • ์šด์˜์ฒด์ œ๊ฐ€ ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ์œ„ํ•ด ํŽ˜์ด์ง•์„ ํ•˜๋Š” ๊ฒƒ ์ฒ˜๋Ÿผ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค๋„ ํ…Œ์ด๋ธ” ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ํŽ˜์ด์ง•์„ ํ•œ๋‹ค. โ†’ ์ด๋…ธ๋””๋น„๋Š” ํŽ˜์ด์ง€ ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ LRU ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค.

์“ฐ๊ธฐ ์ง€์—ฐ ๋ฒ„ํผ

  • ๋ฒ„ํผํ’€์€ ์“ฐ๊ธฐ ์ง€์—ฐ ๋ฒ„ํผ๋กœ๋„ ์‚ฌ์šฉ๋œ๋‹ค. Insert Update Delete ๋ช…๋ น์œผ๋กœ ๋ณ€๊ฒฝ๋œ ํŽ˜์ด์ง€๋ฅผ ๋”ํ‹ฐ ํŽ˜์ด์ง€๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ์ด๋…ธ๋””๋น„๋Š” ๋”ํ‹ฐ ํŽ˜์ด์ง€๋“ค์„ ๋ชจ์•˜๋‹ค๊ฐ€ ์ฃผ๊ธฐ์ ์œผ๋กœ ์ด๋ฒคํŠธ๋ฅผ ๋ฐœ์ƒ์‹œ์ผœ์„œ ํ•œ๋ฒˆ์— ๋””์Šคํฌ์— ๋ฐ˜์˜ํ•œ๋‹ค.
  • ๋ณ€๊ฒฝ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ๋ฒˆ์— ๋ชจ์•˜๋‹ค๊ฐ€ ์ฒ˜๋ฆฌํ•˜๋Š” ์ด์œ ๋Š” ๋žœ๋ค I/O๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด์„œ๋‹ค.
  • JPA ์˜์† ์ปจํ…์ŠคํŠธ์˜ ์“ฐ๊ธฐ ์ง€์—ฐ SQL ์ €์žฅ์†Œ๋ž‘ ๋น„์Šท

์–ด๋Œ‘ํ‹ฐ๋ธŒ ํ•ด์‹œ ์ธ๋ฑ์Šค

  • ์ธ๋ฑ์Šค ํ‚ค์™€ ํŽ˜์ด์ง€์˜ ์ฃผ์†Œ๊ฐ’ ์Œ์œผ๋กœ ๊ตฌ์„ฑ๋œ ์ธ๋ฑ์Šค์ด๋‹ค. ํŽ˜์ด์ง€์— ๋น ๋ฅด๊ฒŒ ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋œ๋‹ค.
  • ์‚ฌ์šฉ์ž๊ฐ€ ์ž์ฃผ ์š”์ฒญํ•˜๋Š” ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด์„œ ์ด๋…ธ๋””๋น„๊ฐ€ ์ž๋™์œผ๋กœ ๋งŒ๋“ค์–ด์ค€๋‹ค.
  • ์–ด๋Œ‘ํ‹ฐ๋ธŒ ํ•ด์‹œ ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•ด ์›ํ•˜๋Š” ํŽ˜์ด์ง€์— ๋น ๋ฅด๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ฟผ๋ฆฌ๋ฅผ ๋”๋น ๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

ํƒœ๊ทธ: ,

์นดํ…Œ๊ณ ๋ฆฌ:

์—…๋ฐ์ดํŠธ:

๋Œ“๊ธ€๋‚จ๊ธฐ๊ธฐ