๐Ÿ’ป
Albert's Til
GitHub
  • ๋งค์ผ๋งค์ผ ์กฐ๊ธˆ์”ฉ ์„ฑ์žฅํ•˜๊ธฐ
    • README
    • CS
      • Network
      • HTTP
        • NO-CACHE
      • ์˜ค๋ฅ˜ ์ฝ”๋“œ
      • ORM ๋„๊ตฌ
      • Design Pattern
        • CQRS Pattern
          • Event Sourcing and CQRS pattern
        • Builder Pattern
    • DB
      • MySQL
        • Timeline
        • Pagination
        • Index
        • Database Performance Optimization Strategies
        • B+ tree
        • MySQL Connectors VS MySQL Shell(Scripting) VS MySQL Workbench
        • MySQL Storage Engine Architecture
      • Normalization & Denormalization
      • JPA
        • @Transactional
        • Why JPA?
        • About JPA
        • N+1 Issue
        • Index
        • ElementCollection&CollectionTable
        • orphanRemoval
        • CascadeType
        • Use Subselect
        • Dynamic Instance Creation
        • Paging
        • Order
        • Spefication
        • mappedBy
      • MongoDB
        • ObjectId
      • Why MySQL?
      • ACID properties of transactions
      • Between JPA and JDBC
      • Identifiers in Hibernate/JPA
    • Java
      • Jackson de/serialize
      • Collections.singletonList() vs List.of()
      • Manage dependencies in Gradle
      • Logging Level
      • Bean Validation
      • JVM Internals
        • Threads
          • Frame
        • Shared Between Threads
          • Classloader
            • Class Loader Hierarchy
            • Loading Linking Initialization
      • Java Collection Framework
      • Annotation
      • Generic
      • ๋””๋ฏธํ„ฐ ๋ฒ•์น™
    • Spring
      • Caching
      • Spring Integration Overview
        • ThreadPollTaskExecutor
        • Messaging Bridge
        • Channel Adapter
        • Poller
        • Configuration and @EnableIntegration
        • Message Endpoints
        • Message Channels
      • HATEOAS
      • @Autowired vs Constructor Dependency Injection
      • Spring Security
        • JWT ํ† ํฐ ์‚ฌ์šฉํ•œ ์ธ๊ฐ€
        • OAuth 2 Login
        • OAuth 2 ์ธ์ฆ
        • ์ธ๊ฐ€
        • ์ธ์ฆ
        • PasswordEncoder
      • IoC Container
      • Filter,Interceptor,AOP,Argument Resolver
      • Spring Annotation
      • About Spring
    • Kafka
      • Error Channel
    • Infra
      • Scale Up || Scale Out
      • Docker
        • Dockerfile
        • Docker Hub Deploy
        • Command
      • Cloud ์œ ํ˜•
        • Infrastructure as a Service
        • Platform as a Service
        • Software as a Service
      • ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ
        • ์—”์ง„์—‘์Šค(Nginx)
      • ์ฝ”๋“œ ์ž๋™ ๋ฐฐํฌ
        • Technical
      • AWS EC2
        • PEM(Privacy Enhanced Mail) ํ‚ค
      • AWS RDS
      • AWS S3
    • CodeSquad
      • Spring Boot Project 1์ฃผ์ฐจ ํšŒ๊ณ 
      • Spring Boot Project 2์ฃผ์ฐจ ํšŒ๊ณ 
      • Spirng Boot Project 3์ฃผ์ฐจ ํšŒ๊ณ 
      • Spring Boot Project 4์ฃผ์ฐจ ํšŒ๊ณ 
    • Foody Moody ํ”„๋กœ์ ํŠธ
      • Query Performance Comparison
      • HeartCount Asynchronous Issue
      • DeferredResult
      • ResponseBodyEmitter
      • SseEmitter (Spring)
      • Server-Sent Events (SSE)
      • ๊ธฐ์ˆ  ์Šคํƒ ์ ์šฉ ์ด์œ 
      • NO-CACHE(HTTP)
      • Transactional
    • DDD
      • AggregateId
    • Test
      • RestAssured
    • Coding and Algorithmic Problems
      • 819. Most Common Word
      • 344. Reverse String
      • 125. Valid Palindrome
      • 937. Reorder Data in Log Files
    • Node
      • Async... Await...
      • Custom Transactional Decorator Challenger
    • Python
      • Python Basic Grammar
        • Comments and Input/Output
        • Variable
        • Data type
        • Operations and syntax
        • List,Tuple,Dictionary,Set
        • Function
        • Conditional statement
        • Loop
    • HTML
      • HTML Basic
      • HTML Basic Tags
      • HTML Form Tags
      • HTML Table Tags
    • CSS
      • CSS Basic
      • CSS Practice
Powered by GitBook
On this page
  • MySQL Storage Engine Architecture(version 8.0)
  • MySQL Connectors
  • MySQL Shell(Scripting)
  • MySQL ์„œ๋ฒ„ ํ”„๋กœ์„ธ์Šค(mysqld)
  • NoSQL ์ธํ„ฐํŽ˜์ด์Šค CRUD ์ž‘์—…
  • SQL ์ธํ„ฐํŽ˜์ด์Šค
  • ํŒŒ์„œ
  • ์ „์ฒ˜๋ฆฌ๊ธฐ(๊ทธ๋ฆผ์— ์—†์ง€๋งŒ)
  • Optimizer
  • ์บ์‹œ ๋ฐ ๋ฒ„ํผ
  • ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„(Default)
  • InnoDB
  • MyISAM
  • NDB ํด๋Ÿฌ์Šคํ„ฐ
  • Memory
  • ํŒŒ์ผ ์‹œ์Šคํ…œ
  • ํŒŒ์ผ & ๋กœ๊ทธ

Was this helpful?

  1. ๋งค์ผ๋งค์ผ ์กฐ๊ธˆ์”ฉ ์„ฑ์žฅํ•˜๊ธฐ
  2. DB
  3. MySQL

MySQL Storage Engine Architecture

Last updated 1 year ago

Was this helpful?

![[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

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

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

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

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

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

MySQL Storage Engine Architecture(version 8.0)