Home /Database/๐Ÿ’ฌ MySQl/ InnoDB ์Šคํ† ๋ฆฌ์ง€ ์—” ์•„ํ‚คํ…์ณ
Post
Cancel

/Database/๐Ÿ’ฌ MySQl/ InnoDB ์Šคํ† ๋ฆฌ์ง€ ์—” ์•„ํ‚คํ…์ณ



4.2 InnoDB ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„ ์•„ํ‚คํ…์ฒ˜ 4.2.1 ํ”„๋ผ์ด๋จธ๋ฆฌ ํ‚ค์— ์˜ํ•œ ํด๋Ÿฌ์Šคํ„ฐ๋ง 4.2.2 ์™ธ๋ž˜ ํ‚ค ์ง€์› 4.2.3 MVCC(Multi Version Concurrency Control) 4.2.4 ์ž ๊ธˆ ์—†๋Š” ์ผ๊ด€๋œ ์ฝ๊ธฐ(Non-Locking Consistent Read) 4.2.5 ์ž๋™ ๋ฐ๋“œ๋ฝ ๊ฐ์ง€ 4.2.6 ์ž๋™ํ™”๋œ ์žฅ์•  ๋ณต๊ตฌ



2.7 InnoDB ๋ฒ„ํผ ํ’€



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



2.7.1 ๋ฒ„ํผ ํ’€์˜ ํฌ๊ธฐ ์„ค์ •



  • ์šด์˜์ฒด์ œ์™€ ๊ฐ ํด๋ผ์ด์–ธํŠธ ์Šค๋ ˆ๋“œ๊ฐ€ ์‚ฌ์šฉํ•  ๋ฉ”๋ชจ๋ฆฌ๋„ ์ถฉ๋ถ„ํžˆ ๊ณ ๋ คํ•ด์„œ ์„ค์ •


  • MySQL ์„œ๋ฒ„ ๋‚ด์—์„œ ๋ ˆ์ฝ”๋“œ ๋ฒ„ํผ๊ฐ€ ์ƒ๋‹นํ•œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ :
    ์ปค๋„ฅ์…˜์ด ๋งŽ๊ณ  ์‚ฌ์šฉํ•˜๋Š” ํ…Œ์ด๋ธ”๋„ ๋งŽ๋‹ค๋ฉด
    ๋ ˆ์ฝ”๋“œ ๋ฒ„ํผ ์šฉ๋„๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด ๊ฝค ๋งŽ์ด ํ•„์š”ํ•ด์งˆ ์ˆ˜๋„ ์žˆ์Œ

    • ๋ ˆ์ฝ”๋“œ ๋ฒ„ํผ
      • ๊ฐ ํด๋ผ์ด์–ธํŠธ ์„ธ์…˜์—์„œ ํ…Œ์ด๋ธ”์˜ ๋ ˆ์ฝ”๋“œ๋ฅผ ์ฝ๊ณ  ์“ธ ๋•Œ ๋ฒ„ํผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ณต๊ฐ„
      • MySQL ์„œ๋ฒ„๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๋ ˆ์ฝ”๋“œ ๋ฒ„ํผ ๊ณต๊ฐ„์€ ๋ณ„๋„๋กœ ์„ค์ •ํ•  ์ˆ˜ ์—†์œผ๋ฉฐ,
        ์ „์ฒด ์ปค๋„ฅ์…˜ ๊ฐœ์ˆ˜์™€ ๊ฐ ์ปค๋„ฅ์…˜์—์„œ ์ฝ๊ณ  ์“ฐ๋Š” ํ…Œ์ด๋ธ”์˜ ๊ฐœ์ˆ˜์— ๋”ฐ๋ผ์„œ ๊ฒฐ์ •๋จ.
      • ๋™์ ์œผ๋กœ ํ•ด์ œ๋˜๊ธฐ๋„ํ•˜๋ฏ€๋กœ ์ •ํ™•ํžˆ ํ•„์š”ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์˜ ํฌ๊ธฐ๋ฅผ ๊ณ„์‚ฐํ•  ์ˆ˜๊ฐ€ ์—†์Œ
        • MySQL 5.7 ๋ฒ„์ „๋ถ€ํ„ฐ๋Š” InnoDB ๋ฒ„ํผ ํ’€์˜ ํฌ๊ธฐ๋ฅผ ๋™์ ์œผ๋กœ ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ๊ฒŒ ๊ฐœ์„ 
        • ๊ทธ๋ž˜์„œ ๊ฐ€๋Šฅํ•˜๋ฉด InnoDB ๋ฒ„ํผ ํ’€์˜ ํฌ๊ธฐ๋ฅผ ์ ์ ˆํžˆ ์ž‘์€ ๊ฐ’์œผ๋กœ ์„ค์ •ํ•ด์„œ
          ์กฐ๊ธˆ์”ฉ ์ƒํ™ฉ์„ ๋ด ๊ฐ€๋ฉด์„œ ์ฆ๊ฐ€์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์ด ์ตœ์ ์˜ ๋ฐฉ๋ฒ•


  • InnoDB ๋ฒ„ํผํ’€ ํฌ๊ธฐ ๋ณ€๊ฒฝ
    • innodb_buffer_pool_size :
      ์‹œ์Šคํ…œ ๋ณ€์ˆ˜๋กœ ํฌ๊ธฐ๋ฅผ ์„ค์ •ํ•˜๊ณ , ๋™์ ์œผ๋กœ ๋ฒ„ํผํ’€์˜ ํฌ๊ธฐ๋ฅผ ํ™•์žฅ
    • ๊ฐ€๋Šฅํ•˜๋ฉด MySQL ์„œ๋ฒ„๊ฐ€ ํ•œ๊ฐ€ํ•œ ์‹œ์ ์„ ๊ณจ๋ผ์„œ ์ง„ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Œ
    • InnoDB ๋ฒ„ํผํ’€์„ ๋” ํฌ๊ฒŒ ๋ณ€๊ฒฝํ•˜๋Š” ์ž‘์—…์€ ์‹œ์Šคํ…œ ์˜ํ–ฅ๋„๊ฐ€ ํฌ์ง€ ์•Š์ง€๋งŒ,
      ๋ฒ„ํผํ’€์˜ ํฌ๊ธฐ๋ฅผ ์ค„์ด๋Š” ์ž‘์—…์€ ์„œ๋น„์Šค ์˜ํ–ฅ๋„๊ฐ€ ๋งค์šฐ ํฌ๋ฏ€๋กœ ๊ฐ€๋Šฅํ•˜๋ฉด
      ๋ฒ„ํผํ’€์˜ ํฌ๊ธฐ๋ฅผ ์ค„์ด๋Š” ์ž‘์—…์€ ํ•˜์ง€ ์•Š๋„๋ก ์ฃผ์˜


  • InnoDB ๋ฒ„ํผ ํ’€์€ ์ „ํ†ต์ ์œผ๋กœ ๋ฒ„ํผ ํ’€ ์ „์ฒด๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์ž ๊ธˆ(์„ธ๋งˆํฌ์–ด)์œผ๋กœ ์ธํ•ด
    ๋‚ด๋ถ€ ์ž ๊ธˆ ๊ฒฝํ•ฉ์„ ๋งŽ์ด ์œ ๋ฐœํ•ด์™”๋Š”๋ฐ, ์ด๋Ÿฐ ๊ฒฝํ•ฉ์„ ์ค„์ด๊ธฐ ์œ„ํ•ด
    ๋ฒ„ํผ ํ’€์„ ์—ฌ๋Ÿฌ๊ฐœ๋กœ ์ชผ๊ฐœ์–ด ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ๊ฐœ์„ 
    • innodb_buffer_pool_instances :
      ๋ฒ„ํผํ’€์„ ์—ฌ๋Ÿฌ๊ฐœ๋กœ ๋ถ„๋ฆฌํ•ด์„œ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ๊ฐ ๋ฒ„ํผ ํ’€์„ ๋ฒ„ํผ ํ’€ ์ธ์Šคํ„ด์Šค๋ผ๊ณ  ํ‘œํ˜„
      • ๋ฒ„ํผํ’€ ์ธ์Šคํ„ด์Šค์˜ ๊ฐœ์ˆ˜
        • ๊ธฐ๋ณธ์ ์œผ๋กœ 8๊ฐœ๋กœ ์ดˆ๊ธฐํ™”
        • ์ „์ฒด ๋ฒ„ํผํ’€์„ ์œ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ๊ฐ€ 1GB ๋ฏธ๋งŒ์ด๋ฉด ๋ฒ„ํผํ’€ ์ธ์Šคํ„ด์Šค๋Š” 1๊ฐœ๋งŒ ์ƒ์„ฑ
        • ๋ฒ„ํผํ’€๋กœ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด 40GB ์ดํ•˜ ์ˆ˜์ค€ :
          ๊ธฐ๋ณธ๊ฐ’์ธ 8์„ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Œ
        • ๋ฒ„ํผํ’€๋กœ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด 40GB ๋ณด๋‹ค ํฌ๋‹ค๋ฉด :
          ๋ฒ„ํผํ’€ ์ธ์Šคํ„ด์Šค๋‹น 5GB ์ •๋„๊ฐ€ ๋˜๊ฒŒ ์ธ์Šคํ„ด์Šค ๊ฐœ์ˆ˜๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Œ



2.7.2 ๋ฒ„ํผ ํ’€์˜ ๊ตฌ์กฐ



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

  • ๋ฒ„ํผํ’€์˜ ํŽ˜์ด์ง€ ํฌ๊ธฐ ์กฐ๊ฐ์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด InnoDB ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์€ 3๊ฐœ์˜ ์ž๋ฃŒ ๊ตฌ์กฐ๋ฅผ ๊ด€๋ฆฌ

    • ํ”„๋ฆฌ(Free) ๋ฆฌ์ŠคํŠธ
    • LRU(Least Recently Used) ๋ฆฌ์ŠคํŠธ
    • ํ”Œ๋Ÿฌ์‹œ(Flush) ๋ฆฌ์ŠคํŠธ



(1) ํ”„๋ฆฌ(Free) ๋ฆฌ์ŠคํŠธ



  • InnoDB ๋ฒ„ํผํ’€์—์„œ ์‹ค์ œ ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ๋กœ ์ฑ„์›Œ์ง€์ง€ ์•Š์€ ๋น„์–ด ์žˆ๋Š” ํŽ˜์ด์ง€๋“ค์˜ ๋ชฉ๋ก
  • ์‚ฌ์šฉ์ž์˜ ์ฟผ๋ฆฌ๊ฐ€ ์ƒˆ๋กญ๊ฒŒ ๋””์Šคํฌ์˜ ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€๋ฅผ ์ฝ์–ด์™€์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉ๋จ



(2) LRU(Least Recently Used) ๋ฆฌ์ŠคํŠธ



  • LRU(Least Recently Used) : Old ์„œ๋ธŒ๋ฆฌ์ŠคํŠธ ์˜์—ญ
  • MRU(Most Recently Used) : New ์„œ๋ธŒ๋ฆฌ์ŠคํŠธ ์˜์—ญ


แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ


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



InnoDB ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๋Š” ๊ณผ์ •

  1. ํ•„์š”ํ•œ ๋ ˆ์ฝ”๋“œ๊ฐ€ ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€๊ฐ€ ๋ฒ„ํผ ํ’€์— ์žˆ๋Š”์ง€ ๊ฒ€์‚ฌ
    • InnoDB ์–ด๋Œ‘ํ‹ฐ๋ธŒ ํ•ด์‹œ ์ธ๋ฑ์Šค๋ฅผ ์ด์šฉํ•ด ํŽ˜์ด์ง€๋ฅผ ๊ฒ€์ƒ‰
    • ํ•ด๋‹น ํ…Œ์ด๋ธ”์˜ ์ธ๋ฑ์Šค(B-Tree)๋ฅผ ์ด์šฉํ•ด ๋ฒ„ํผ ํ’€์—์„œ ํŽ˜์ด์ง€๋ฅผ ๊ฒ€์ƒ‰
    • ๋ฒ„ํผ ํ’€์— ์ด๋ฏธ ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€๊ฐ€ ์žˆ์—ˆ๋‹ค๋ฉด ํ•ด๋‹น ํŽ˜์ด์ง€์˜ ํฌ์ธํ„ฐ๋ฅผ MRU ๋ฐฉํ–ฅ์œผ๋กœ ์Šน๊ธ‰
  2. ๋””์Šคํฌ์—์„œ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€๋ฅผ ๋ฒ„ํผ ํ’€์— ์ ์žฌํ•˜๊ณ ,
    ์ ์žฌ๋œ ํŽ˜์ด์ง€์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ๋ฅผ LRU ํ—ค๋” ๋ถ€๋ถ„์— ์ถ”๊ฐ€

  3. ๋ฒ„ํผํ’€์˜ LRU ํ—ค๋” ๋ถ€๋ถ„์— ์ ์žฌ๋œ ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€๊ฐ€ ์‹ค์ œ๋กœ ์ฝํžˆ๋ฉด MRU ํ—ค๋” ๋ถ€๋ถ„์œผ๋กœ ์ด๋™
    (Read Ahead์™€ ๊ฐ™์ด ๋Œ€๋Ÿ‰ ์ฝ๊ธฐ์˜ ๊ฒฝ์šฐ ๋””์Šคํฌ์˜ ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€๊ฐ€ ๋ฒ„ํผ ํ’€๋กœ ์ ์žฌ๋Š” ๋˜์ง€๋งŒ
    ์‹ค์ œ ์ฟผ๋ฆฌ์—์„œ ์‚ฌ์šฉ๋˜์ง€๋Š” ์•Š์„ ์ˆ˜๋„ ์žˆ์œผ๋ฉฐ, ์ด๋Ÿฐ ๊ฒฝ์šฐ์—๋Š” MRU๋กœ ์ด๋™๋˜์ง€ ์•Š์Œ)

  4. ๋ฒ„ํผํ’€์— ์ƒ์ฃผํ•˜๋Š” ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€๋Š” ์‚ฌ์šฉ์ž ์ฟผ๋ฆฌ๊ฐ€ ์–ผ๋งˆ๋‚˜ ์ตœ๊ทผ์— ์ ‘๊ทผํ–ˆ์—ˆ๋Š”์ง€์— ๋”ฐ๋ผ ๋‚˜์ด(Age) ๋ถ€์—ฌ,
    ๋ฒ„ํผํ’€์— ์ƒ์ฃผํ•˜๋Š” ๋™์•ˆ ์ฟผ๋ฆฌ์—์„œ ์˜ค๋žซ๋™์•ˆ ์‚ฌ์šฉ๋˜์ง€ ์•Š์œผ๋ฉด
    ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€์— ๋ถ€์—ฌ๋œ ๋‚˜์ด๊ฐ€ ์˜ค๋ž˜๋˜๊ณ (โ€˜Agingโ€™์ด๋ผ๊ณ  ํ•จ) ๊ฒฐ๊ตญ ํ•ด๋‹น ํŽ˜์ด์ง€๋Š” ๋ฒ„ํผ ํ’€์—์„œ ์ œ๊ฑฐ๋จ.
    • ๋ฒ„ํผ ํ’€์˜ ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€๊ฐ€ ์ฟผ๋ฆฌ์— ์˜ํ•ด ์‚ฌ์šฉ๋˜๋ฉด ๋‚˜์ด๊ฐ€ ์ดˆ๊ธฐํ™”๋˜์–ด ๋‹ค์‹œ ์ Š์–ด์ง€๊ณ  MRU์˜ ํ—ค๋” ๋ถ€๋ถ„์œผ๋กœ ์˜ฎ๊ฒจ์ง.
    • Eviction : ๋ฒ„ํผ ํ’€์—์„œ ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€๋ฅผ ์‚ญ์ œํ•ด ์ถ”๊ฐ€ ๊ณต๊ฐ„์„ ํ™•๋ณดํ•˜๋Š” ์ž‘์—…
  5. ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ž์ฃผ ์ ‘๊ทผ๋๋‹ค๋ฉด ํ•ด๋‹น ํŽ˜์ด์ง€์˜ ์ธ๋ฑ์Šค ํ‚ค๋ฅผ ์–ด๋Œ‘ํ‹ฐ๋ธŒ ํ•ด์‹œ ์ธ๋ฑ์Šค์— ์ถ”๊ฐ€


โžก๏ธ ์ฒ˜์Œ ํ•œ ๋ฒˆ ์ฝํžŒ ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€๊ฐ€ ์ดํ›„

  • ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ :
    ๊ทธ ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€๋Š” InnoDB ๋ฒ„ํผํ’€์˜ MRU ์˜์—ญ์—์„œ ๊ณ„์† ์กด์žฌ
  • ๊ฑฐ์˜ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ :
    ์ƒˆ๋กญ๊ฒŒ ๋””์Šคํฌ์—์„œ ์ฝํžˆ๋Š” ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€๋“ค์— ๋ฐ€๋ ค์„œ LRU์˜ ๋์œผ๋กœ InnoDB ๋ฒ„ํผ ํ’€์—์„œ ์ œ๊ฑฐ



(3) ํ”Œ๋Ÿฌ์‹œ(Flush) ๋ฆฌ์ŠคํŠธ



  • ๋””์Šคํฌ๋กœ ๋™๊ธฐํ™”๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง„ ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€(๋”ํ‹ฐ ํŽ˜์ด์ง€)์˜ ๋ณ€๊ฒฝ ์‹œ์  ๊ธฐ์ค€์˜ ํŽ˜์ด์ง€ ๋ชฉ๋ก์„ ๊ด€๋ฆฌ
  • ์ผ๋‹จ ํ•œ ๋ฒˆ ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ์ด ๊ฐ€ํ•ด์ง„ ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€๋Š” ํ”Œ๋Ÿฌ์‹œ ๋ฆฌ์ŠคํŠธ์— ๊ด€๋ฆฌ๋˜๊ณ  ํŠน์ • ์‹œ์ ์ด ๋˜๋ฉด ๋””์Šคํฌ๋กœ ๊ธฐ๋ก๋˜์•ผ ํ•จ


  • ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด InnoDB๋Š” ๋ณ€๊ฒฝ ๋‚ด์šฉ์„ ๋ฆฌ๋‘ ๋กœ๊ทธ์— ๊ธฐ๋กํ•˜๋ฉด
    • ๋ฒ„ํผํ’€์˜ ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€์—๋„ ๋ณ€๊ฒฝ ๋‚ด์šฉ์„ ๋ฐ˜์˜
      -> ๋ฆฌ๋‘ ๋กœ๊ทธ์˜ ๊ฐ ์—”ํŠธ๋ฆฌ๋Š” ํŠน์ •๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€์™€ ์—ฐ๊ฒฐ
    • ๋ฒ„ํผํ’€์˜ ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€์—๋„ ๋ณ€๊ฒฝ ๋‚ด์šฉ์„ ๋ฐ˜์˜ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ
    • InnoDB ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์€ ์ฒดํฌํฌ์ธํŠธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ด
      -> ๋””์Šคํฌ์˜ ๋ฆฌ๋‘ ๋กœ๊ทธ์™€ ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€์˜ ์ƒํƒœ๋ฅผ ๋™๊ธฐํ™”


โœ”๏ธ ์ฒดํฌํฌ์ธํŠธ :
MySQL ์„œ๋ฒ„๊ฐ€ ์‹œ์ž‘๋  ๋•Œ InnoDB ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์ด
๋ฆฌ๋‘ ๋กœ๊ทธ์˜ ์–ด๋Š ๋ถ€๋ถ„๋ถ€ํ„ฐ ๋ณต๊ตฌ๋ฅผ ์‹คํ–‰ํ•ด์•ผ ํ• ์ง€ ํŒ๋‹จํ•˜๋Š” ๊ธฐ์ค€์ ์„ ๋งŒ๋“œ๋Š” ์—ญํ• 



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



แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ


  • InnoDB์˜ ๋ฒ„ํผํ’€๊ณผ ๋ฆฌ๋‘ ๋กœ๊ทธ๋Š” ๋งค์šฐ ๋ฐ€์ ‘ํ•œ ๊ด€๊ณ„
  • InnoDB์˜ ๋ฒ„ํผ ํ’€์€ ์„œ๋ฒ„์˜ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ—ˆ์šฉํ•˜๋Š” ๋งŒํผ ํฌ๊ฒŒ ์„ค์ •ํ•˜๋ฉด ํ• ์ˆ˜๋ก ์ฟผ๋ฆฌ์˜ ์„ฑ๋Šฅ์ด ๋นจ๋ผ์ง
    (์ด๋ฏธ ๋””์Šคํฌ์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ ํŒŒ์ผ์ด ๋ฒ„ํผ ํ’€์— ์ ์žฌ๋  ์ •๋„์˜ ๋ฒ„ํผ ํ’€ ๊ณต๊ฐ„์ด ์•„๋‹ ๊ฒฝ์šฐ)


InnoDB ๋ฒ„ํผํ’€์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„œ๋ฒ„์˜ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์œ„ํ•œ ์—ญํ• 

  1. ๋ฐ์ดํ„ฐ ์บ์‹œ
  2. ์“ฐ๊ธฐ ๋ฒ„ํผ๋ง
  • ๋ฐ์ดํ„ฐ ์บ์‹œ ๊ธฐ๋Šฅ ํ–ฅ์ƒ :
    ๋ฒ„ํผํ’€์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„๋งŒ ๋‹จ์ˆœํžˆ ๋Š˜๋ฆฌ๋Š” ๊ฒƒ์€ ๋ฐ์ดํ„ฐ ์บ์‹œ ๊ธฐ๋Šฅ๋งŒ ํ–ฅ์ƒ
  • ๋ฐ์ดํ„ฐ ์บ์‹œ ๊ธฐ๋Šฅ ํ–ฅ์ƒ + ์“ฐ๊ธฐ ๋ฒ„ํผ๋ง ๊ธฐ๋Šฅ ํ–ฅ์ƒ : โ€ฆ?



๋ฒ„ํผํ’€



  • ํด๋ฆฐ ํŽ˜์ด์ง€(Clean Page) : ๋””์Šคํฌ์—์„œ ์ฝ์€ ์ƒํƒœ๋กœ ์ „ํ˜€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์€ ํŽ˜์ด์ง€
  • ๋”ํ‹ฐ ํŽ˜์ด์ง€(Dirty Page) : INSERT, UPDATE, DELETE ๋ช…๋ น์œผ๋กœ ๋ณ€๊ฒฝ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง„ ํŽ˜์ด์ง€


๋”ํ‹ฐ ํŽ˜์ด์ง€

  • ๋””์Šคํฌ์™€ ๋ฉ”๋ชจ๋ฆฌ(๋ฒ„ํผ ํ’€)์˜ ๋ฐ์ดํ„ฐ ์ƒํƒœ๊ฐ€ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ์–ธ์  ๊ฐ€๋Š” ๋””์Šคํฌ๋กœ ๊ธฐ๋ก
  • ๋ฒ„ํผ ํ’€์— ๋ฌดํ•œ์ • ๋จธ๋ฌด๋ฅผ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹˜



๋ฆฌ๋‘๋กœ๊ทธ



  • InnoDB ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์—์„œ ๋ฆฌ๋‘ ๋กœ๊ทธ๋Š” 1๊ฐœ ์ด์ƒ์˜ ๊ณ ์ • ํฌ๊ธฐ ํŒŒ์ผ์„ ์—ฐ๊ฒฐํ•ด์„œ ์ˆœํ™˜ ๊ณ ๋ฆฌ์ฒ˜๋Ÿผ ์‚ฌ์šฉ๋จ
  • ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ์ด ๊ณ„์† ๋ฐœ์ƒํ•˜๋ฉด ๋ฆฌ๋‘ ๋กœ๊ทธ ํŒŒ์ผ์— ๊ธฐ๋ก๋๋˜ ๋กœ๊ทธ ์—”ํŠธ๋ฆฌ๋Š”
    ์–ด๋Š ์ˆœ๊ฐ„ ๋‹ค์‹œ ์ƒˆ๋กœ์šด ๋กœ๊ทธ ์—”ํŠธ๋ฆฌ๋กœ ๋ฎ์–ด ์“ฐ์ž„


  • InnoDB ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์€
    ์ „์ฒด ๋ฆฌ๋‘ ๋กœ๊ทธ ํŒŒ์ผ์—์„œ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ณต๊ฐ„๊ณผ ๋‹น์žฅ ์žฌ์‚ฌ์šฉ ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ณต๊ฐ„์„ ๊ตฌ๋ถ„ํ•ด์„œ ๊ด€๋ฆฌ

redo log ์ƒํƒœ

  1. current
    • ํ˜„์žฌ ์‚ฌ์šฉ ์ค‘
    • ํ˜„์žฌ LGWR์ด ๋‚ด์šฉ์„ ๊ธฐ๋กํ•˜๊ณ  ์žˆ๋Š” ์ƒํƒœ
  2. active
    • ํ™œ์šฉ ๋ถˆ๊ฐ€๋Šฅํ•œ ์ƒํƒœ
    • ์•„์ง DB Buffer Cache ์—์„œ Data File๋กœ ์ €์žฅ์ด ์•ˆ ๋œ ์ƒํƒœ
  3. inactive
    • ํ™œ์šฉ ๊ฐ€๋Šฅํ•œ ์ƒํƒœ
    • Data File์— ์ €์žฅ ์ž‘์—…๊นŒ์ง€ ๋๋‚œ Redo Log
    • Redo Log File์„ ์‚ญ์ œํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด INACTIVE ์ƒํƒœ๋กœ ๋งŒ๋“ค๊ณ  ์ˆ˜ํ–‰ํ•ด์•ผ ํ•จ
  4. unused
    • ํ•œ๋ฒˆ๋„ ์‚ฌ์šฉํ•œ ์ ์ด ์—†๋Š” ์ƒํƒœ


  • LSN(Log Sequence Number) :
    ๋งค๋ฒˆ ๊ธฐ๋ก๋  ๋•Œ๋งˆ๋‹ค ๋กœ๊ทธ ํฌ์ง€์…˜์€ ๊ณ„์† ์ฆ๊ฐ€๋œ ๊ฐ’์„ ๊ฐ–์Œ
    (๋ฆฌ๋‘ ๋กœ๊ทธ ํŒŒ์ผ์˜ ๊ณต๊ฐ„์€ ๊ณ„์† ์ˆœํ™˜๋˜์–ด ์žฌ์‚ฌ์šฉ)



2.7.4 ๋ฒ„ํผ ํ’€ ํ”Œ๋Ÿฌ์‹œ(Buffer Pool Flush)



2.7.4.1 ํ”Œ๋Ÿฌ์‹œ ๋ฆฌ์ŠคํŠธ ํ”Œ๋Ÿฌ์‹œ



2.7.4.2 LRU ๋ฆฌ์ŠคํŠธ ํ”Œ๋Ÿฌ์‹œ



2.7.5 ๋ฒ„ํผ ํ’€ ์ƒํƒœ ๋ฐฑ์—… ๋ฐ ๋ณต๊ตฌ

2.7.6 ๋ฒ„ํผ ํ’€์˜ ์ ์žฌ ๋‚ด์šฉ ํ™•์ธ

2.8 Double Write Buffer

2.9 ์–ธ๋‘ ๋กœ๊ทธ

2.9.1 ์–ธ๋‘ ๋กœ๊ทธ ๋ ˆ์ฝ”๋“œ ๋ชจ๋‹ˆํ„ฐ๋ง

2.9.2 ์–ธ๋‘ ํ…Œ์ด๋ธ”์ŠคํŽ˜์ด์Šค ๊ด€๋ฆฌ




(์ฐธ๊ณ )



๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ์—ฌ๋Ÿฌ๊ธ€๊ณผ ์ฑ… ์ฝ์€ ๋‚ด์šฉ์„ ๋ฐ”ํƒ•์œผ๋กœ ์ •๋ฆฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์ข‹์€ ๊ธ€๋กœ ์ €์˜ ๊ณต๋ถ€์— ๋„์›€์„ ์ฃผ์‹œ๋Š” ๋ถ„๋“ค๊ป˜ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

This post is licensed under CC BY 4.0 by the author.

/Database/๐Ÿ’ฌ MySQl/Mysql ์—”์ง„ ์•„ํ‚คํ…์ณ

/Database/ ๐Ÿ’ฌ ๋ฆด๋ ˆ์ด์…˜, ํŠœํ”Œ, ์†์„ฑ, ๋„๋ฉ”์ธ