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
660
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
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
470
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.5k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
180
Designing for humans not robots
tammielis
254
26k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
350
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.9k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
500
Color Theory Basics | Prateek | Gurzu
gurzu
0
390
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
360
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
72
40k
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使用率が低い) • 適当な時間間隔 • …
まとめ • バッファプールキャッシュのサイズは重要 • ストレージエンジンの仕組みを理解しておくと、パフォーマン スチューニングに役に立つ