๋ฒ ์–ด_
TechBear
๋ฒ ์–ด_
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (336)
    • Spring (33)
      • ๊ฐœ๋… (13)
      • Security (5)
      • ์‹ค์Šต (1)
      • ํ† ๋น„ ์Šคํ”„๋ง (11)
    • JPA (6)
    • ํ”„๋กœ์ ํŠธ ๊ธฐ๋ก (24)
    • DB (13)
    • JAVA (18)
    • ์•Œ๊ณ ๋ฆฌ์ฆ˜ (50)
      • ์œ ํ˜•์ •๋ฆฌ (8)
      • Baekjoon (21)
      • LeetCode (18)
    • ๋””์ž์ธํŒจํ„ด (0)
    • ๊ฐœ๋ฐœ์„œ์  (79)
      • Effective Java (78)
      • ๊ฐ์ฒด์ง€ํ–ฅ์˜ ์‚ฌ์‹ค๊ณผ ์˜คํ•ด (1)
    • ๋…ํ›„๊ฐ (4)
    • ๋ณด์•ˆ (2)
    • ์šด์˜์ฒด์ œ(OS) (53)
      • ๊ณต๋ฃก์ฑ… (53)
    • ์ปดํ“จํ„ฐ ๋„คํŠธ์›Œํฌ (28)
      • ์ปดํ“จํ„ฐ ๋„คํŠธ์›Œํฌ ํ•˜ํ–ฅ์‹ ์ ‘๊ทผ (23)
    • ์ž๋ฃŒ๊ตฌ์กฐ (1)
    • DevOps (2)
    • ์•ฑ ๊ฐœ๋ฐœ (20)
      • ์•ˆ๋“œ๋กœ์ด๋“œ ์ŠคํŠœ๋””์˜ค (20)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    ๊ณต์ง€์‚ฌํ•ญ

    ์ธ๊ธฐ ๊ธ€

    ํƒœ๊ทธ

    • C++
    • ๋ฐฑ์ค€
    • jpa
    • ์ž๋ฐ”8
    • ์Šค๋ ˆ๋“œ
    • ์Šคํ”„๋ง
    • ์ดํŽ™ํ‹ฐ๋ธŒ์ž๋ฐ”
    • ์Šคํ”„๋ง์‹œํ๋ฆฌํ‹ฐ
    • leetcode
    • ์•Œ๊ณ ๋ฆฌ์ฆ˜
    • BFS
    • ์šด์˜์ฒด์ œ
    • dfs
    • Spring
    • java
    • ํ•จ์ˆ˜ํ˜•์ธํ„ฐํŽ˜์ด์Šค
    • ํ† ๋น„์Šคํ”„๋ง
    • ์ฝ”๋“œ์—…
    • ์ž๋ฐ”
    • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

    ์ตœ๊ทผ ๋Œ“๊ธ€

    ์ตœ๊ทผ ๊ธ€

    ํ‹ฐ์Šคํ† ๋ฆฌ

    hELLO ยท Designed By ์ •์ƒ์šฐ.
    ๋ฒ ์–ด_

    TechBear

    [DB] MySQL ์•„ํ‚คํ…์ฒ˜: ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„
    DB

    [DB] MySQL ์•„ํ‚คํ…์ฒ˜: ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„

    2023. 7. 21. 22:44

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

       MySQL์˜ ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” InnoDB์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž. ์•ž์œผ๋กœ ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์ด๋ผ๊ณ  ํ•˜๋ฉด InnoDB ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์ด๋‹ค.

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

    ๋‹ค์Œ์€ InnoDB ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์˜ ์•„ํ‚คํ…์ฒ˜ ๋„์‹๋„์ด๋‹ค. ์„ธ๋ถ€์ ์œผ๋กœ ํ‘œํ˜„๋˜์–ด์•ผ ํ•  ๋ถ€๋ถ„์€ ๋’ค์—์„œ ์ž์„ธํžˆ ์„ค๋ช…ํ•  ๊ฒƒ์ด๋‹ค. 

     

    ๐Ÿ” InnoDB์˜ ํŠน์ง•

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

       InnoDB์˜ ๋ชจ๋“  ํ…Œ์ด๋ธ”์€ PK๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํด๋Ÿฌ์Šคํ„ฐ๋ง๋˜์–ด ์ €์žฅ๋œ๋‹ค. ํด๋Ÿฌ์Šคํ„ฐ๋ง์ด๋ž€ ํŠน์ • ์—ด์˜ ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ ฌํ•˜์—ฌ ๋””์Šคํฌ ์ƒ์—์„œ ์„œ๋กœ ์ธ์ ‘ํ•˜๊ฒŒ ์ €์žฅํ•ด์ฃผ๋Š” ๊ธฐ์ˆ ์ด๋‹ค. ์ฆ‰, InnoDB์˜ ๋ชจ๋“  ํ…Œ์ด๋ธ”์€ PK๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ๋น„์Šทํ•œ ๊ฐ’๋“ค์ด ๋ชจ์—ฌ ์žˆ๋‹ค. ์ด๋Š” ๋ฒ”์œ„ ๊ฒ€์ƒ‰์„ ๋น ๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค. 

     

    โœ๏ธ MVCC(Multi Version Concurrency Control)

       Multi Version์ด๋ž€ ํ•˜๋‚˜์˜ ๋ ˆ์ฝ”๋“œ์— ๋Œ€ํ•ด์„œ ์—ฌ๋Ÿฌ ๋ฒ„์ „์˜ ๋ ˆ์ฝ”๋“œ ๊ฐ’์ด ์กด์žฌํ•จ์„ ์˜๋ฏธํ•  ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ…Œ์ด๋ธ”์ด ์žˆ๊ณ  ํ•™์ƒ์˜ grade๊ฐ€ ์ž˜๋ชป ๋˜์–ด ์ˆ˜์ •ํ•œ๋‹ค๊ณ  ํ•ด๋ณด์ž. 

    ํ…Œ์ด๋ธ” ์˜ˆ์‹œ

    ๋‹ค์Œ๊ณผ ๊ฐ™์€ UPDATE ์ฟผ๋ฆฌ๋ฌธ์„ ๋‚ ๋ฆฌ ์ˆ˜ ์žˆ๋‹ค.

    UPDATE student SET studnet.grade = 1 WHERE student.id = 2

     

    InnoDB๊ฐ€ ์ด๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ณผ์ •์— ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฟผ๋ฆฌ๋ฌธ์„ ๋‚ ๋ฆฌ๋ฉด Mango์˜ ํ•™๋…„์€ 1๋กœ ๋‚˜์˜ฌ๊นŒ ? 2๋กœ ๋‚˜์˜ฌ๊นŒ?

    SELECT * FROM student WHERE student.id = 2;

    ์ด๋Š” ํŠธ๋žœ์žญ์…˜ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์งˆ ๊ฒƒ์ด๋‹ค. ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์ด READ_UNCOMMITTED์ธ ๊ฒฝ์šฐ์—๋Š” 2๋กœ ๋‚˜์˜ฌ ๊ฒƒ์ด๋‹ค. ๋งŒ์•ฝ READ_COMMITED๋‚˜ ๊ทธ ์ด์ƒ์˜ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์ด๋ผ๋ฉด 1๋กœ ๋‚˜์˜ฌ ๊ฒƒ์ด๋‹ค. ์ด๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ๊ฐ€๋Šฅํ• ๊นŒ?

     

    ์ด๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด InnoDB ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์˜ ๊ตฌ์กฐ๋ฅผ ์ข€ ๋” ์ž์„ธํžˆ ์‚ดํŽด๋ณด์ž.

    InnoDB ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์˜ ์„ธ๋ถ€ ์•„ํ‚คํ…์ฒ˜

    • ์–ธ๋‘ ํŽ˜์ด์ง€ : InnoDB ํŠธ๋žœ์žญ์…˜์˜ ๋กค๋ฐฑ์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜. ๋กค๋ฐฑ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ, ์–ธ๋‘ ํŽ˜์ด์ง€๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ณ€๊ฒฝ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ด์ „ ์ƒํƒœ๋กœ ๋ณต์›ํ•˜๊ณ , ํ•ด๋‹น ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋””์Šคํฌ์— ๋ฐ˜์˜ํ•˜์ง€ ์•Š๊ณ  ์‚ญ์ œํ•˜์—ฌ ๋กค๋ฐฑํ•œ๋‹ค.
    • ์ฒด์ธ์ง€ ๋ฒ„ํผ : InnoDB๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํŽ˜์ด์ง€ ๋‹จ์œ„๋กœ ๋””์Šคํฌ์— ๊ธฐ๋กํ•˜๋Š”๋ฐ, ๋ณ€๊ฒฝ๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐ”๋กœ ๋””์Šคํฌ์— ๊ธฐ๋ก๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ๋จผ์ € ์ฒด์ธ์ง€ ๋ฒ„ํผ์— ๊ธฐ๋ก๋œ๋‹ค. 
    • ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€ ๋ฒ„ํผ : ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์บ์‹ฑํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. 

     

    ์ด์ œ UPDATE ์ฟผ๋ฆฌ๋ฌธ์ด ๋‚ ๋ผ๊ฐ”์„ ๋•Œ InnoDB์˜ ์–ธ๋‘ ๋กœ๊ทธ์— ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ ˆ์ฝ”๋“œ๊ฐ€ ์ƒ๊ธด๋‹ค. 

    InnoDB ๋ฒ„ํผ ํ’€๊ณผ ์–ธ๋‘ ๋กœ๊ทธ

    ์ด๋•Œ, SELECT๋ฌธ์„ ๋‚ ๋ฆฌ๋ฉด READ_UNCOMMITED๋Š” ์–ธ๋‘ ๋กœ๊ทธ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜ค๊ณ  READ_COMMITED ์ด์ƒ์˜ ํŠธ๋žœ์žญ์…˜ ๋ฝ์€ ๋ฒ„ํผ ํ’€์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜จ๋‹ค. 

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

     

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

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

     

    โœ๏ธ ์ž๋™ํ™”๋œ ์žฅ์•  ๋ณต๊ตฌ

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

     

    ๐Ÿ” InnoDB ๋ฒ„ํผ ํ’€

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

    โœ๏ธ ๋ฒ„ํผ ํ’€์˜ ๊ตฌ์กฐ 

    ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์€ ๋ฒ„ํผ ํ’€์ด๋ผ๋Š” ๊ฑฐ๋Œ€ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ํŽ˜์ด์ง€ ํฌ๊ธฐ์˜ ์กฐ๊ฐ์œผ๋กœ ์ชผ๊ฐœ์–ด InnoDB ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์ด ๋ฐ์ดํ„ฐ๋ฅผ ํ•„์š”๋กœ ํ•  ๋•Œ ํ•ด๋‹น ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€๋ฅผ ์ฝ์–ด์„œ ๊ฐ ์กฐ๊ฐ์— ์ €์žฅํ•œ๋‹ค.

    ๋ฒ„ํผ ํ’€์€ LRU ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ด€๋ฆฌํ•จ์œผ๋กœ์จ ํ•œ ๋ฒˆ ์ฝ์–ด์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์œ ์ง€ํ•ด์„œ ๋””์Šคํฌ ์ฝ๊ธฐ๋ฅผ ์ตœ์†Œํ™”ํ•œ๋‹ค. LRU๊ฐ€ ๋™์ž‘ํ•˜๋Š” ๋ฐฉ์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

    ๋ฒ„ํผ ํ’€ ๋™์ž‘ ๋ฐฉ์‹ (LRU ๋ฆฌ์ŠคํŠธ)

    1. ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฒ„ํผ ํ’€์— ์žˆ๋Š”์ง€ ๊ฒ€์‚ฌํ•œ๋‹ค. 
      • ์ด๋•Œ InnoDB ์–ด๋Œ‘ํ‹ฐ๋ธŒ ํ•ด์‹œ ์ธ๋ฑ์Šค๋ฅผ ์ด์šฉํ•˜์—ฌ ํŽ˜์ด์ง€๋ฅผ ๊ฒ€์ƒ‰ํ•œ๋‹ค.
      • ๋ฒ„ํผ ํ’€์ด ์ด๋ฏธ ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€์— ์žˆ๋‹ค๋ฉด ํ•ด๋‹น ํŽ˜์ด์ง€์˜ ํฌ์ธํ„ฐ๋ฅผ MRU ๋ฐฉํ–ฅ์œผ๋กœ ์Šน๊ธ‰ํ•œ๋‹ค. 
    2. ๋””์Šคํฌ์—์„œ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€๋ฅผ ๋ฒ„ํผ ํ’€์— ์ ์žฌํ•˜๊ณ , ์ ์žฌ๋œ ํŽ˜์ด์ง€์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ๋ฅผ LRU ํ—ค๋” ๋ถ€๋ถ„์— ์ถ”๊ฐ€ํ•œ๋‹ค. 
    3. ๋ฒ„ํผ ํ’€์˜ LRU ํ—ค๋” ๋ถ€๋ถ„์— ์ ์žฌ๋œ ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€๊ฐ€ ์‹ค์ œ๋กœ ์ฝํžˆ๋ฉด MRU ํ—ค๋” ๋ถ€๋ถ„์œผ๋กœ ์ด๋™ํ•œ๋‹ค. 
    4. ๋ฒ„ํผ ํ’€์— ์ƒ์ฃผํ•˜๋Š” ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€๋Š” ์‚ฌ์šฉ์ž ์ฟผ๋ฆฌ๊ฐ€ ์–ผ๋งˆ๋‚˜ ์ตœ๊ทผ์— ์ ‘๊ทผํ–ˆ์—ˆ๋Š”์ง€์— ๋”ฐ๋ผ ๋‚˜์ด๊ฐ€ ๋ถ€์—ฌ๋˜๊ณ , ์˜ค๋žซ๋™์•ˆ ์‚ฌ์šฉ๋˜์ง€ ์•Š์œผ๋ฉด ํ•ด๋‹น ๋ฒ„ํผ ํ’€์—์„œ ์ œ๊ฑฐ ๋œ๋‹ค. 

     

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

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

    InnoDB์˜ ๋ฒ„ํผ ํ’€์€ ๋””์Šคํฌ์—์„œ ์ฝ์€ ์ƒํƒœ๋กœ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์€ ํด๋ฆฐ ํŽ˜์ด์ง€์™€ ๋ณ€๊ฒฝ๋œ ๋”ํ‹ฐ ํŽ˜์ด์ง€๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ๋”ํ‹ฐ ํŽ˜์ด์ง€๋Š” ๋””์Šคํฌ์™€ ๋ฉ”๋ชจ๋ฆฌ์˜ ๋ฐ์ดํ„ฐ ์ƒํƒœ๊ฐ€ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ๋””์Šคํฌ์— ๊ธฐ๋ก๋˜์–ด์•ผ ํ•œ๋‹ค. ๋ฒ„ํผ ํ’€์˜ ๋”ํ‹ฐ ํŽ˜์ด์ง€๋Š” ํŠน์ • ๋ฆฌ๋‘ ๋กœ๊ทธ ์—”ํŠธ๋ฆฌ์™€ ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง€๊ณ , ์ฃผ๊ธฐ์ ์œผ๋กœ ๋””์Šคํฌ์— ๋™๊ธฐํ™”๋œ๋‹ค.

    ๋ฒ„ํผ ํ’€๊ณผ ๋ฆฌ๋‘ ๋กœ๊ทธ

    ๋ฒ„ํผ ํ’€์ด 50GB์ด๋ฉฐ ๋ฆฌ๋‘ ๋กœ๊ทธ ํŒŒ์ผ์˜ ์ „์ฒด ํฌ๊ธฐ๊ฐ€ 50MB์ธ ๊ฒฝ์šฐ์—๋Š” ๋ฒ„ํผ๋ง ํšจ๊ณผ๋ฅผ ์ „ํ˜€ ๋ชป๊ฒŒ ๋˜๊ณ , ๋ฒ„ํผ ํ’€์ด 50Mb์ด๊ณ  ๋ฆฌ๋‘ ๋กœ๊ทธ ํŒŒ์ผ์˜ ์ „์ฒด ํฌ๊ธฐ๊ฐ€ 50GB๋ผ๋ฉด ์ตœ๋Œ€ ํ—ˆ์šฉ ๊ฐ€๋Šฅํ•œ ๋”ํ‹ฐ ํŽ˜์ด์ง€๋Š” ๋Œ€๋žต 50MB๊ฐ€ ๋œ๋‹ค. ํ›„์ž์˜ ๊ฒฝ์šฐ์—๋Š” ๊ธ‰์ž‘์Šค๋Ÿฌ์šด ๋””์Šคํฌ ์“ฐ๊ธฐ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค. (๋ฉ”๋ชจ๋ฆฌ์˜ 90%๊ฐ€ ์‚ฌ์šฉ๋˜์–ด InnoDB๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ๋Œ€๋Ÿ‰์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ํ˜„์ƒ). ๋”ฐ๋ผ์„œ ์ ์ ˆํ•œ ๋ฆฌ๋‘ ๋กœ๊ทธ ํŒŒ์ผ์˜ ํฌ๊ธฐ๋ฅผ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค.

     

    ๐Ÿ” ์–ธ๋‘ ๋กœ๊ทธ

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

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

    T(A) : BEGIN --> SELECT ---------------------------------------------->
    T(B) :             BEGIN -> UPDATE -> COMMIT
    T(C) :                       BEGIN -> DELETE -> COMMIT

    ์ด๋Ÿฐ ๋ฌธ์ œ์ ์€ MySQL 8.0๋ถ€ํ„ฐ๋Š” ์–ธ๋‘ ๋กœ๊ทธ์˜ ๋””์Šคํฌ ๊ณต๊ฐ„์„ ์กฐ์ ˆ๊ธฐ๋Šฅ์ด ๋„์ž…๋˜๋ฉด์„œ ์‚ฌ๋ผ์กŒ๋‹ค.

     

    ๐Ÿ” ์ฒด์ธ์ง€ ๋ฒ„ํผ

       ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ƒˆ๋กœ์šด ๋ ˆ์ฝ”๋“œ๊ฐ€ Insert๋˜๊ฑฐ๋‚˜ Update๋   ๋•Œ๋Š” ์ธ๋ฑ์Šค๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ์ž‘์—…๋„ ํ•„์š”ํ•˜๋‹ค. ์ธ๋ฑ์Šค๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ์ž‘์—…์€ ๋žœ๋คํ•˜๊ฒŒ ๋””์Šคํฌ๋ฅผ ์ฝ๋Š” ์ž‘์—…์ด ํ•„์š”ํ•˜๋ฏ€๋กœ ์ž„์‹œ ์ €์žฅ ๊ณต๊ฐ„์ธ ์ฒด์ธ์ง€ ๋ฒ„ํผ์— ์ €์žฅํ•ด ๋‘๊ณ  ๋‚˜์ค‘์— ํ•œ ๋ฒˆ์— ์—…๋ฐ์ดํŠธ ํ•œ๋‹ค.

    ์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)
      'DB' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
      • [DB] MySQL ์–ด๋Œ‘ํ‹ฐ๋ธŒ ํ•ด์‹œ ์ธ๋ฑ์Šค
      • [DB] MySQL ์•„ํ‚คํ…์ฒ˜: MySQL์—”์ง„
      • [DB] ์—ญ ์ •๊ทœํ™”
      • [DB] BC ์ •๊ทœํ™”
      ๋ฒ ์–ด_
      ๋ฒ ์–ด_
      Today I learned | ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ฐœ๋ฐœ์ž

      ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”