๊ด€๋ฆฌ ๋ฉ”๋‰ด

โœ๐Ÿป๊ธฐ๋กํ•˜๋Š” ๋ธ”๋กœ๊ทธ

MySQL - ์•„ํ‚คํ…์ฒ˜ ๋ณธ๋ฌธ

DB

MySQL - ์•„ํ‚คํ…์ฒ˜

์ฉ์‹œํ‚ด 2022. 11. 29. 00:36
728x90

MySQL ์•„ํ‚คํ…์ฒ˜ ๊ฐœ์š”

https://dev.mysql.com/doc/refman/8.0/en/pluggable-storage-overview.html

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

  • Mysql์€ ๋Œ€๋ถ€๋ถ„ ์–ธ์–ด์— ๋Œ€ํ•ด ์ ‘์† API ์ œ๊ณต + Shell

 

MySQL ์„œ๋ฒ„ = MySQL ์—”์ง„ + ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„

1. MySQL ์„œ๋ฒ„

์Šค๋ ˆ๋“œ ๊ธฐ๋ฐ˜ ์ž‘๋™ = Foreground Thread + BackGround Thread

  • Foreground Thread(ํด๋ผ์ด์–ธํŠธ ์Šค๋ ˆ๋“œ)
    • MySQL ์„œ๋ฒ„์— ์ ‘์†๋œ ํด๋ผ์ด์–ธํŠธ์˜ ์ˆ˜๋งŒํผ ์กด์žฌ
    • Foreground Thread๋Š” ๋ฐ์ดํ„ฐ ๋ฒ„ํผ๋‚˜ ์บ์‹œ๋กœ๋ถ€ํ„ฐ ๊ฐ€์ ธ
  • BackGround Thread

 

2. MySQL ์—”์ง„

ํด๋ผ์ด์–ธํŠธ ์ ‘์†, SQL ์š”์ฒญ, ์ฟผ๋ฆฌ ๋ถ„์„ ๋ฐ ์ตœ์ ํ™” ์—ญํ• 

์•„๋ž˜ ๋ชจ๋“ˆ๋กœ ๊ตฌ์„ฑ. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๊ฐ ์—”์ง„์˜ ์•„ํ‚คํ…์ฒ˜์—์„œ ์„ค๋ช…

  • ์ฟผ๋ฆฌ ํŒŒ์„œ
  • ์ „์ฒ˜๋ฆฌ๊ธฐ
  • ์˜ตํ„ฐ๋งˆ์ด์ €
  • ์‹คํ–‰ ์—”์ง„

 

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

๋ฐ์ดํ„ฐ ์Šคํ† ๋ฆฌ์ง€์— ์ €์žฅ ๋ฐ ์ฝ์–ด์˜ค๋Š” ์—ญํ• 

 

4. ํ•ธ๋“ค๋Ÿฌ API

MySQL ์—”์ง„์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์—์„œ Read, Write ์š”์ฒญ ์‹œ ์‚ฌ์šฉํ•˜๋Š” API

 

5. File System ๋ฐ File Logs

์‹ค์ œ ํ…Œ์ด๋ธ” ๋ฐ์ดํ„ฐ ๋ฐ ๋กœ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ํŒŒ์ผ๋กœ ์ €์žฅํ•˜๋Š” OS์˜ ํŒŒ์ผ ์‹œ์Šคํ…œ ๋ฐ ํ•˜๋“œ์›จ์–ด


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

1. Query Cache

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

2. Query Parser

https://www.researchgate.net/figure/SQL-parse-tree-of-an-SQL-injection_fig1_237102618

SQL ๋ฌธ์žฅ์„ ์˜๋ฏธ ์žˆ๋Š” ํ† ํฐ์œผ๋กœ ์ชผ๊ฐœ์„œ ํŠธ๋ฆฌ๊ตฌ์กฐ(Parse Tree)๋กœ ์ƒ์„ฑ

์ด ๋‹จ๊ณ„์—์„œ ์ฟผ๋ฆฌ ๋ฌธ์žฅ์˜ ๊ธฐ๋ณธ ์˜ค๋ฅ˜ ์ฒดํฌ

 

3. Preprocessor

parse tree๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ SQL์˜ ๋ฌธ์žฅ ๊ตฌ์กฐ๋ฅผ ์ฒดํฌ

parse tree์˜ ํ† ํฐ์ด ์œ ํšจํ•œ์ง€ ์ฒดํฌ

 

4. Optimizer

SQL ์‹คํ–‰์„ ์ตœ์ ํ™”์—์„œ ์‹คํ–‰ ๊ณ„ํš์„ ์ˆ˜๋ฆฝ

์˜ตํ‹ฐ๋งˆ์ด์ €๊ฐ€ SQL์„ ์ตœ์ ํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•

 

  1. ๊ทœ์น™ ๊ธฐ๋ฐ˜ ์ตœ์ ํ™”
    • Opmizer์— ๋‚ด์žฅ๋œ ์šฐ์„ ์ˆœ์œ„์— ๋”ฐ๋ผ ์ ์ˆ˜๋ฅผ ์ฑ…์ •ํ•˜์—ฌ ์‹คํ–‰ ๊ณ„ํš ์ˆ˜๋ฆฝ
  2. ๋น„์šฉ ๊ธฐ๋ฐ˜ ์ตœ์ ํ™”
    • SQL๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ• ๋งˆ๋ จ ํ›„, ์ž‘์—…์˜ ๋น„์šฉ๊ณผ ๋Œ€์ƒ ํ…Œ์ด๋ธ”์˜ ํ†ต๊ณ„์ •๋ณด๋ฅผ ํ™œ์šฉํ•ด์„œ ์‹คํ–‰๊ณ„ํš ์ˆ˜๋ฆฝ

 

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

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

Handler API์— ์˜ํ•ด ๋™์ž‘

 

6. Storage Engine

์ฟผ๋ฆฌ ์‹คํ–‰ ์—”์ง„์ด ์š”์ฒญํ•˜๋Š” ๋Œ€๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋””์Šคํฌ๋กœ ์ฝ๊ณ  ์ €์žฅ

728x90
๋ฐ˜์‘ํ˜•