MySQL Storage Engine Architecture

![[MysqlStorgeEngineArchitecture.png]]

MySQL Connectors

  • ๋‹ค์–‘ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์™€ ๊ธฐ์ˆ ์ด MySQ์— ์—ฐ๊ฒฐํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋‹ค.

  • JDBC์™€ ๊ฐ™์€ ์ปค๋„ฅํ„ฐ ๋ฐ Node.js ๊ฐ™์€ ์–ธ์–ด๋ฅผ ์œ„ํ•œ ์ปค๋„ฅํ„ฐ ๋“ค์ด ์žˆ๋‹ค.

  • ์ด ์ปค๋„ฅํ„ฐ๋“ค์€ ๋‹ค์–‘ํ•œ ์–ธ์–ด๋กœ ์ž‘์„ฑ๋œ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด MySQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์‚ฌ์šฉ ์ž‘์šฉํ•˜๊ณ , ์ฟผ๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ  , ๊ฒฐ๊ณผ๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.

MySQL Shell(Scripting)

  • ์‚ฌ์šฉ์ž๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ , SQL ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๋ฉฐ,SQL ๋ฐ MySQL์ด ์ง€์›ํ•˜๋Š” ๋‹ค๋ฅธ ์Šคํฌ๋ฆฝํŒ… ์–ธ์–ด๋กœ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๋ช…๋ น์ค„ ์ธํ„ฐํŽ˜์ด์Šค๋‹ค.

  • ์‚ฌ์šฉ๋ฐฉ๋ฒ•

// MySQL ์‰˜ ์„ค์น˜
brew install --cask mysql-shell
// MySQL ์‰˜ ์‹œ์ž‘
mysqlsh
// JavaScript ๋ชจ๋“œ๋กœ ์ „ํ™˜
\js
// ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์—ฐ๊ฒฐ (\connect albert@localhost:3306/{database})
\connect user@host. 
// sql ์ „ํ™”
\sql 
// SQL ๋ฌธ ์‹คํ–‰ ๊ฐ€๋Šฅ 
show tables

MySQL ์„œ๋ฒ„ ํ”„๋กœ์„ธ์Šค(mysqld)

๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ช…๋ น์–ด(SQL ์ฟผ๋ฆฌ)๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ํ•ต์‹ฌ๊ตฌ์„ฑ ์š”์†Œ๋‹ค

NoSQL ์ธํ„ฐํŽ˜์ด์Šค CRUD ์ž‘์—…

  • NoSQL ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒ์„ฑ(Create),์ผ๊ธฐ(Read),๊ฐฑ์‹ (Update),์‚ญ์ œ(Delete) ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•œ๋‹ค.

SQL ์ธํ„ฐํŽ˜์ด์Šค

  • DML(๋ฐ์ดํ„ฐ ์กฐ์ž‘ ์–ธ์–ด - INSERT,UPDATE,DELETE,SELECT)๊ณผ DDL(๋ฐ์ดํ„ฐ ์ •์˜ ์–ธ์–ด - CREATE,ALTER,DROP)๊ณผ ๊ฐ™์€ ํ‘œ์ค€ SQL ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•œ๋‹ค.

ํŒŒ์„œ

  • SQL ์ฟผ๋ฆฌ์˜ ๊ตฌ๋ฌธ์„ ํ•ด์„ํ•˜๊ณ  ๊ฒ€์‚ฌํ•œ๋‹ค.

  • ๊ตฌ๋ฌธ ํŠธ๋ฆฌ(Syntax tree)๋ฅผ ๋งŒ๋“ ๋‹ค.

  • ์ด ๊ณผ์ •์—์„œ ๋ฌธ๋ฒ• ์˜ค๋ฅ˜ ๊ฒ€์‚ฌ๊ฐ€ ์ด๋ฃจ์–ด์ง„๋‹ค.

์ „์ฒ˜๋ฆฌ๊ธฐ(๊ทธ๋ฆผ์— ์—†์ง€๋งŒ)

  • ์ฟผ๋ฆฌ ํŒŒ์„œ์—์„œ ๋งŒ๋“  ํŠธ๋ฆฌ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ „์ฒ˜๋ฆฌ๋ฅผ ์‹œ์ž‘ํ•œ๋‹ค.

  • ํ…Œ์ด๋ธ”์ด๋‚˜ ์ปฌ๋Ÿผ์˜ ์กด์žฌ ์—ฌ๋ถ€, ์ ‘๊ทผ ๊ถŒํ•œ ๋“ฑ ์˜๋ฏธ๋ก ์ (Semantic) ์˜ค๋ฅ˜๋ฅผ ๊ฒ€์‚ฌํ•œ๋‹ค.

  • ์ฟผ๋ฆฌ ํŒŒ์„œ์™€ ์ „์ฒ˜๋ฆฌ๊ธฐ๋Š” ์ปดํŒŒ์ผ ๊ณผ์ •๊ณผ ๋งค์šฐ ์œ ์‚ฌํ•˜๋‹ค.

  • ํ•˜์ง€๋งŒ SQL์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ฒ˜๋Ÿผ ์ปดํŒŒ์ผ ํƒ€์ž„์— ๊ฒ€์ฆํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋งค๋ฒˆ ๊ตฌ๋ฌธ ํ‰๊ฐ€๋ฅผ ์ง„ํ–‰ํ•œ๋‹ค.

Optimizer

  • SQL ์ฟผ๋ฆฌ๋ฅผ ๋ถ„์„ํ•˜๊ณ  ๊ฐ€์žฅ ํšจ์œจ์ ์ธ ์‹คํ–‰ ๋ฐฉ๋ฒ•์„ ๊ฒฐ์ •ํ•œ๋‹ค.

์บ์‹œ ๋ฐ ๋ฒ„ํผ

  • ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ๊ธฐ๊ฐ„์„ ์ค„์ด๊ธฐ ์œ„ํ•ด ์ผ์‹œ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋„๋‹ˆ๋‹ค. ๊ธ€๋กœ๋ฒŒ ์บ์‹œ ๋ฐ ๋ฒ„ํผ์™€ ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„๋ณ„ ์บ์‹œ ๋ฐ ๋ฒ„ํผ๊ฐ€ ํฌํ•จ๋œ๋‹ค.

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

์‹ค์ œ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ๊ฒ€์ƒ‰ํ•˜๋Š” ๊ตฌ์„ฑ ์š”์†Œ๋‹ค. MySQL์€ ๋‹ค์–‘ํ•œ ์œ ํ˜•์˜ ์ž‘์—…์— ์ตœ์ ํ™”๋œ ์—ฌ๋Ÿฌ ์†Œํ† ๋ฆฌ์ง€ ์—”์ง„์„ ์ง€์›ํ•œ๋‹ค

InnoDB

  • MySQL์˜ ๊ธฐ๋ณธ ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์œผ๋กœ, ์™ธ๋ž˜ ํ‚ค ์ง€์›๊ณผ ํ•จ๊ป˜ ์ „์ฒด ACID ์ค€์ˆ˜ ํŠธ๋žœ์žญ์…˜ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.

MyISAM

  • ๊ณ ์† ์ €์žฅ์„ ์ œ๊ณตํ•˜์ง€๋งŒ ํŠธ๋žœ์žญ์…˜ ๊ธฐ๋Šฅ์ด ์—†๋Š” ์˜ค๋ž˜๋œ ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์ด๋‹ค.

NDB ํด๋Ÿฌ์Šคํ„ฐ

  • ๋†’์€ ์ค‘๋ณต์„ฑ๊ณผ ๊ฐ€์šฉ์„ฑ์„ ์œ„ํ•ด ์„ค๊ณ„๋œ ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์ด๋‹ค.

Memory

  • ์‹œ์Šคํ…œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์œผ๋กœ, ๋น ๋ฅด์ง€๋งŒ ์˜๊ตฌ์ ์ด์ง€ ์•Š๋‹ค.

ํŒŒ์ผ ์‹œ์Šคํ…œ

๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜๋Š” ๊ธฐ๋ณธ ํŒŒ์ผ ์‹œ์Šคํ…œ์ด๋‹ค.

ํŒŒ์ผ & ๋กœ๊ทธ

  • ์‹ค์ œ ๋ฐ์ดํ„ฐ, ์ธ๋ฑ์Šค ์ •๋ณด, ๋ณต์ œ๋ฅผ ์œ„ํ•œ ๋ฐ”์ด๋„ˆ๋ฆฌ ๋กœ๊ทธ, ํŠธ๋žœ์žญ์…˜์„ ์œ„ํ•œ ์–ธ๋‘ ๋กœ๊ทธ, ์„ฑ๋Šฅ ๋ถ„์„์„ ์œ„ํ•œ ์ผ๋ฐ˜ ๋ฐ ๋А๋ฆฐ ์ฟผ๋ฆฌ ๋กœ๊ทธ ๋“ฑ ๋‹ค์–‘ํ•œ ์œ ํ˜•์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•œ๋‹ค.

Last updated

Was this helpful?