Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
MySQLストレージエンジンの仕組み(アーキテクチャ)をざっくり理解する
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
revenue-hack
February 19, 2024
670
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
MySQLストレージエンジンの仕組み(アーキテクチャ)をざっくり理解する
有名なリレーショナルデータベース(RDB)の一つであるMySQLのストレージエンジンの仕組みをざっくり理解して、RDBのパフォーマンスチューニングに活かす
revenue-hack
February 19, 2024
Featured
See All Featured
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
160
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
280
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
320
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.6k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6.1k
Making the Leap to Tech Lead
cromwellryan
135
10k
Optimising Largest Contentful Paint
csswizardry
37
3.9k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
200
[SF Ruby Conf 2025] Rails X
palkan
2
1.3k
We Are The Robots
honzajavorek
0
300
Transcript
MySQLストレージエンジン の仕組みをざっくり理解する revenue-hack
自己紹介 • 現在フリーランス • バックエンドとインフラをメインに活動 • 技術顧問とかしてる • Goがメイン(後はPHPやTSとか) •
コードのアーキテクチャ設計やAWSが好き • フロント(React, Vue)も一応やっていた • 最近正社員になるか悩み中。。。 • X(@tagaranoko1014)
zennで書いた記事の内容を紹介 https://zenn.dev/revenuehack/articles/dc5a901fbe90e6
アジェンダ • SQLの処理フローについて • ストレージエンジンの説明 • SELECT文実行時の場合 • DML(INSERT, UPDATE,
DELETE)実行時の場合 • まとめ
1. SQLが来て、パースする
1. SQLが来て、パースする 2. オプティマイザが実行計画作る
1. SQLが来て、パースする 2. オプティマイザが実行計画作る 3. エグゼキュータが実行 4. ストレージエンジンからデータ取得
1. SQLが来て、パースする 2. オプティマイザが実行計画作る 3. エグゼキュータが実行 4. ストレージエンジンからデータ取得 ストレージエンジンの話!
ストレージエンジンのアーキテクチャ
Buffer pool データのキャッシュが置かれる領域。 基本的にここを通してデータが返され る。多くの場合インメモリの 80%程度 がここの領域に当てられる。 インメモリ Log Buffer
ディスク上のログファイルに書き込ま れるデータを一時的に保持する領 域。redoログデータをディスクに書き 込むと、遅くなってしまうため、 Log Bufferに書き込み、速くトランザクショ ンを実行出来るようにするためにあ る。 インメモリ Redo Log INSERT時などのCOMMITタイミング でデータが書き込まれる。クラッシュ リカバリー時に対応出来るように COMMIT時にこの不揮発性ストレー ジに書き込まれる ストレージ Tablespaces テーブルやインデックスが置かれる 部分 ストレージ
SELECT文のフロー SELECT * FROM `users`; ※これを2回実行した場合の例
1回目SELECT
2回目目以降SELECT
DML文(INSERT,UPDATE,DELETE)のフロー BEGIN; INSERT INTO `users` VALUES (1, ‘hoge’); INSERT INTO
`users` VALUES (2, ‘fuga’); COMMIT;
BEGIN; INSERT INTO `users` VALUES (1, ‘hoge’);
INSERT INTO `users` VALUES (2, ‘fuga’);
COMMIT;
チェックポイントのタイミングwrite! Tablespacesへはいつ書き込まれる?
チェックポイントっていつ? • ReadLogのサイズがあふれる時 • あまりMySQLが稼働してない時(CPU使用率が低い) • 適当な時間間隔 • …
まとめ • バッファプールキャッシュのサイズは重要 • ストレージエンジンの仕組みを理解しておくと、パフォーマン スチューニングに役に立つ