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
revenue-hack
February 19, 2024
1
610
MySQLストレージエンジンの仕組み(アーキテクチャ)をざっくり理解する
有名なリレーショナルデータベース(RDB)の一つであるMySQLのストレージエンジンの仕組みをざっくり理解して、RDBのパフォーマンスチューニングに活かす
revenue-hack
February 19, 2024
Tweet
Share
Featured
See All Featured
Design in an AI World
tapps
0
180
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
190
Faster Mobile Websites
deanohume
310
31k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
Product Roadmaps are Hard
iamctodd
PRO
55
12k
BBQ
matthewcrist
89
10k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.3k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
130
Joys of Absence: A Defence of Solitary Play
codingconduct
1
320
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
150
Scaling GitHub
holman
464
140k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.4k
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使用率が低い) • 適当な時間間隔 • …
まとめ • バッファプールキャッシュのサイズは重要 • ストレージエンジンの仕組みを理解しておくと、パフォーマン スチューニングに役に立つ