[MySQL] InnoDB๋ž€?

jijiยท2023๋…„ 11์›” 2์ผ
0

DataBase

๋ชฉ๋ก ๋ณด๊ธฐ
8/14

๐Ÿ’ก InnoDB๋Š” MySQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„(Storage Engine) ์ค‘ ํ•˜๋‚˜์ด๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—”์ง„์ด๋ž€?

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ, ๊ด€๋ฆฌ ๋ฐ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ํ•ต์‹ฌ ๊ตฌ์„ฑ ์š”์†Œ
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ(DBMS) ๋‚ด๋ถ€์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ, ๊ด€๋ฆฌ, ๊ฒ€์ƒ‰ ๋ฐ ์ฒ˜๋ฆฌ(CRUD ์ฐธ์กฐ)ํ•˜๋Š” ํ•ต์‹ฌ ์†Œํ”„ํŠธ์›จ์–ด ๊ตฌ์„ฑ ์š”์†Œ
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—”์ง„์„ ์กฐ์ž‘ํ•  ๋•Œ DBMS ๊ณ ์œ ์˜ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Œ
  • ๋Œ€๋ถ€๋ถ„ DBMS๋Š” ๊ณ ์œ ์˜ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•˜์ง€ ์•Š๊ณ , ์‚ฌ์šฉ์ž๊ฐ€ ๋‚ด์žฅ๋œ ์—”์ง„๊ณผ ์ƒํ˜ธ์ž‘์šฉ ํ•  ์ˆ˜ ์žˆ๋Š” ์ž์‹ ๋งŒ์˜ API๋ฅผ ํฌํ•จ

์‚ฌ์šฉ ์ด์œ 

  • ๋Œ€์šฉ๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ปจํŠธ๋กคํ•˜๋Š” ๊ฒฝ์šฐ
  • ํŠธ๋žœ์žญ์…˜ ๊ด€๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ
  • ๋ณต๊ตฌ๊ฐ€ ํ•„์š”ํ•  ๊ฒฝ์šฐ
  • ์ •๋ ฌ๋“ฑ์˜ ๊ตฌ๋ฌธ์ด ๋“ค์–ด๊ฐ€๋Š” ๊ฒฝ์šฐ
  • IUD ๋“ฑ์ด ๋นˆ๋ฒˆํ•˜๊ฒŒ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ
  • ๋†’์€ ํผํฌ๋จผ์Šค๊ฐ€ ํ•„์š”ํ•œ ๋Œ€์šฉ๋Ÿ‰ ์‚ฌ์ดํŠธ์— ์ ํ•ฉ

InnoDB์˜ ํŠน์ง•

  • ํŠธ๋žœ์žญ์…˜ ์ง€์›
  • ์™ธ๋ž˜ ํ‚ค ์ œ์•ฝ ์กฐ๊ฑด - ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์„ ๊ฐ•ํ™”
    : ์™ธ๋ž˜ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋‚ด์—์„œ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”๊ณผ์˜ ๊ด€๊ณ„๋ฅผ ์ •์˜ํ•˜๊ณ  ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํ–‰ ๋‹จ์œ„ ์ž ๊ธˆ(Row-Level Locking) - ๋™์‹œ์„ฑ ์ œ์–ด ๊ฐ€๋Šฅ
    • ์—ฌ๋Ÿฌ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋™์‹œ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ  ์“ธ ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.
    • ๋ณ€๊ฒฝ ์ž‘์—…(INSERT, UPDATE, DELETE)์˜ ์†๋„๊ฐ€ ๋น ๋ฆ„
  • MVCC(Multi Versioning Concurrency Control) ๊ตฌ์กฐ๋กœ ๋™์ž‘
    : ํŠธ๋žœ์žญ์…˜ ๊ฐ„์— ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๋ฉด์„œ ๋™์‹œ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

๋‹จ์ 

  • ๋ณต๊ตฌ ๋ฐฉ๋ฒ• ์–ด๋ ค์›€
  • Dead lock ๋ฐœ์ƒ ๊ฐ€๋Šฅ์„ฑ ์žˆ์Œ
  • ์—ฌ๋Ÿฌ๊ธฐ๋Šฅ์ด ์กด์žฌํ•˜๋ฏ€๋กœ ๋ชจ๋ธ ๋””์ž์ธ ์‹œ๊ฐ„โ†‘
  • ์‹œ์Šคํ…œ ์ž์›์„ ๋งŽ์ด ์ฐจ์ง€ํ•จ
  • Full-text ์ธ๋ฑ์‹ฑ์ด ๋ถˆ๊ฐ€๋Šฅ

โš ๏ธ InnoDB ์‚ฌ์šฉ ์‹œ ์ฃผ์˜ ์‚ฌํ•ญ

  • ํ…Œ์ด๋ธ” ์ปฌ๋Ÿผ ์ˆ˜๋Š” ์ตœ๋Œ€ 1000๊ฐœ
  • Key์˜ ์ตœ๋Œ€ ๊ธธ์ด๋Š” 3500byte์ด์ง€๋งŒ, MySQL์—์„œ 1024byte๋กœ ์ œํ•œ
  • LongBlob, LongText ์ปฌ๋Ÿผ์€ ์ตœ๋Œ€ 4GB ์ดํ•˜
  • InnoDB๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ 65,535byte row-size๋ฅผ ์ง€์›ํ•˜์ง€๋งŒ, 65,535 ์ด์ƒ์˜ varchar๋ฅผ ํฌํ•จํ•œ ์นผ๋Ÿผ์€ ์ •์˜ํ•  ์ˆ˜ ์—†๋‹ค.

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