SlideShare a Scribd company logo
MySQLMySQL アーキテクチャアーキテクチャ
図解講座図解講座
奥野 幹也
Twitter: @nippondanji
mikiya (dot) okuno (at) gmail (dot) com
@Database Lounge Tokyo #1
免責事項
本プレゼンテーションにおいて示されている見解は、私
自身の見解であって、オラクル・コーポレーションの見
解を必ずしも反映したものではありません。ご了承くだ
さい。
自己紹介
●
MySQL サポートエンジニア
– 日々のしごと
● トラブルシューティング全般
● Q&A 回答
●
パフォーマンスチューニング
など
●
ライフワーク
– 自由なソフトウェアの普及
● オープンソースではない
● GPL 万歳!!
– 最近はまってる趣味はリカンベント(自転車)
●
ブログ
– 漢のコンピュータ道
– http://nippondanji.blogspot.com/
MySQL 5.7 の
アーキテクチャ概要
MySQL のアーキテクチャ
概略図
ストレージエンジンとは
● データの格納と取り出しを担当
– トランザクション管理
● 行アクセスの排他制御
● クラッシュリカバリ
– 統計情報の管理
●
テーブル
● インデックス
– 低レベルの行アクセス API
● 先頭からのスキャン
● 任意のポジションの行を取得
● キーによる検索
● インデックススキャン
etc
ストレージエンジンによる
テーブルスキャンの例
ha_tina::store_lock
ha_tina::external_lock
ha_tina::info
ha_tina::rnd_init
ha_tina::extra - ENUM HA_EXTRA_CACHE Cache record in HA_rrnd()
ha_tina::rnd_next
ha_tina::rnd_next
ha_tina::rnd_next
ha_tina::rnd_next
ha_tina::rnd_next
ha_tina::rnd_next
ha_tina::rnd_next
ha_tina::rnd_next
ha_tina::rnd_next
ha_tina::extra - ENUM HA_EXTRA_NO_CACHE End caching of records (def)
ha_tina::external_lock
ha_tina::extra - ENUM HA_EXTRA_RESET Reset database to after open
オプティマイザ
クエリ実行の流れ
● GNU Bison によるパーサー
● コストベースオプティマイザ
– コスト係数を調整可能
– ストレージエンジンから
統計情報を取得
● 行アクセスやトランザクション管
理はストレージエンジンまかせ
Nested Loop Join
SELECT … FROM t1 INNER JOIN t2 ON … WHERE …
for each row in t1 matching where condition {
for each row in t2 matching join and where condition {
send joined row to client
}
}
Block Nested Loop Join
MySQL が利用する文字コード
InnoDB
教科書通りのトランザクション
対応データストア
InnoDB
ログバッファ
InnoDB
ログファイル
InnoDB
バッファプール
InnoDB
テーブルスペース
クラスターインデックス
InnoDB の分離レベル
分離レベル 分離性 ダーティー
リード
インコンシス
テントリード
ロストアップ
デート
ファントム
READ-
UNCOMMITTED
低 ○ ○ ○ ○
READ-
COMMITTED
× ○ ○ ○
REPEATABLE-
READ
× × ○ ×
SERIALIZABLE 高 × × × ×
●
InnoDB の RR ではファントムは起きない!!
– ただしロッキングリードとノンロッキングリードに注意
ネクストキーロック
● ロッキングリードにおいて
ファントムを防ぐ仕組み
●
行と行の間の仮想的な
空間にロックをかける
●
INSERT をブロック!!
UNDO ログと MVCC
UNDO ログトランケート
UNDO ログ空き領域
UNDO ログ使用中の領域
innodb_max_
undo_log_size
INACTIVE
初期サイズ = 10MB
INACTIVE にして
空になるまで待つ。
その間は他の UNDO
ログファイルで凌ぐ。
UNDO ログ
ファイルを初期化
UNDO ログファイルの
サイズがしきい値を超えた
圧縮テーブル
● innodb_file_format = Barracuda
● CREATE TABLE tblname (…) ENGINE = InnoDB ROW_FORMAT =
COMPRESSED KEY_BLOCK_SIZE=4;
バッファプールが
二重に消費される。
オーバーヘッド大。
透過的テーブル圧縮
CREATE TABLE tblname
(…) ENGINE = InnoDB
COMPRESSION = lz4;
透過的テーブルスペース
暗号化の仕組み
レプリケーション
レプリケーションの概要
準同期レプリケーション
バイナリログの
グループコミット
スレーブ上で並列化可能な
トランザクション
マルチスレッドスレーブ
LOGICAL_CLOCK モード
パフォーマンス
スキーマ
パフォーマンススキーマ
vs 情報スキーマ
パフォーマンススキーマ 情報スキーマ
主目的 パフォーマンスデータの取得 メタデータの取得
アプリケーション パフォーマンスチューニング 監視ツールや管理ツール
導入されたバージョン 5.5 5.1
SQL 標準? いいえ はい
実装方法 ストレージエンジンのひとつ 情報スキーマ API
データ収集のタイミング mysqld 内部で任意のタイミ
ングでコード実行時
情報スキーマテーブルアクセ
ス時
通常時のオーバーヘッド あり なし
表示によるオーバーヘッド 少ない 大きい
類似のツール DTrace, SystemTap SHOW コマンド
計器( Instrument )
コンシューマー
●
計器をグループ化
● パフォーマンスデータを保
存するメモリ領域
宣伝: 新書籍「詳解 MySQL 5.7 」
● MySQL 5.7 の新機能を網羅
– 175 もの新機能を解説
– 新機能の理解に欠かせ
ないアーキテクチャの話
も盛りだくさん
– 本日解説しなかった新
機能も詳しく解説!!
●
8 月 23 日発売予定
Q&Aご静聴ありがとうございました。

More Related Content

PDF
MongoDB WiredTiger Internals
Norberto Leite
 
PDF
「内積が見えると統計学も見える」第5回 プログラマのための数学勉強会 発表資料
Ken'ichi Matsui
 
PDF
マルチテナント化で知っておきたいデータベースのこと
Amazon Web Services Japan
 
PPTX
Sql server のバックアップとリストアの基礎
Masayuki Ozawa
 
PDF
Graphic Notes on Linear Algebra and Data Science
Kenji Hiranabe
 
PPTX
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
NTT DATA Technology & Innovation
 
PDF
The InnoDB Storage Engine for MySQL
Morgan Tocker
 
PDF
Vacuum徹底解説
Masahiko Sawada
 
MongoDB WiredTiger Internals
Norberto Leite
 
「内積が見えると統計学も見える」第5回 プログラマのための数学勉強会 発表資料
Ken'ichi Matsui
 
マルチテナント化で知っておきたいデータベースのこと
Amazon Web Services Japan
 
Sql server のバックアップとリストアの基礎
Masayuki Ozawa
 
Graphic Notes on Linear Algebra and Data Science
Kenji Hiranabe
 
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
NTT DATA Technology & Innovation
 
The InnoDB Storage Engine for MySQL
Morgan Tocker
 
Vacuum徹底解説
Masahiko Sawada
 

What's hot (20)

PDF
怖くないSpring Bootのオートコンフィグレーション
土岐 孝平
 
PDF
アーキテクチャから理解するPostgreSQLのレプリケーション
Masahiko Sawada
 
PDF
PostgreSQL 15の新機能を徹底解説
Masahiko Sawada
 
PDF
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
Mikiya Okuno
 
PDF
トランザクション処理可能な分散DB 「YugabyteDB」入門(Open Source Conference 2022 Online/Fukuoka 発...
NTT DATA Technology & Innovation
 
PDF
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
NTT DATA Technology & Innovation
 
PPTX
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
 
PDF
ソーシャルゲーム案件におけるDB分割のPHP実装
infinite_loop
 
PDF
そんなトランザクションマネージャで大丈夫か?
takezoe
 
PDF
Where狙いのキー、order by狙いのキー
yoku0825
 
PDF
MySQL 5.7にやられないためにおぼえておいてほしいこと
yoku0825
 
PDF
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(PostgreSQL Conference Japa...
NTT DATA Technology & Innovation
 
PDF
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Koichiro Matsuoka
 
PDF
さいきんの InnoDB Adaptive Flushing (仮)
Takanori Sejima
 
PDF
データベース設計徹底指南
Mikiya Okuno
 
PDF
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
 
PPTX
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)
NTT DATA Technology & Innovation
 
PDF
今さらだけどMySQLとライセンス
Hidenori Ishii
 
PDF
ヤフー社内でやってるMySQLチューニングセミナー大公開
Yahoo!デベロッパーネットワーク
 
PPTX
さくっと理解するSpring bootの仕組み
Takeshi Ogawa
 
怖くないSpring Bootのオートコンフィグレーション
土岐 孝平
 
アーキテクチャから理解するPostgreSQLのレプリケーション
Masahiko Sawada
 
PostgreSQL 15の新機能を徹底解説
Masahiko Sawada
 
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
Mikiya Okuno
 
トランザクション処理可能な分散DB 「YugabyteDB」入門(Open Source Conference 2022 Online/Fukuoka 発...
NTT DATA Technology & Innovation
 
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
NTT DATA Technology & Innovation
 
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
 
ソーシャルゲーム案件におけるDB分割のPHP実装
infinite_loop
 
そんなトランザクションマネージャで大丈夫か?
takezoe
 
Where狙いのキー、order by狙いのキー
yoku0825
 
MySQL 5.7にやられないためにおぼえておいてほしいこと
yoku0825
 
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(PostgreSQL Conference Japa...
NTT DATA Technology & Innovation
 
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Koichiro Matsuoka
 
さいきんの InnoDB Adaptive Flushing (仮)
Takanori Sejima
 
データベース設計徹底指南
Mikiya Okuno
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
 
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)
NTT DATA Technology & Innovation
 
今さらだけどMySQLとライセンス
Hidenori Ishii
 
ヤフー社内でやってるMySQLチューニングセミナー大公開
Yahoo!デベロッパーネットワーク
 
さくっと理解するSpring bootの仕組み
Takeshi Ogawa
 
Ad

Similar to MySQLアーキテクチャ図解講座 (20)

PDF
データモデルについて知っておくべき7つのこと 〜NoSQLに手を出す前に〜
Mikiya Okuno
 
PDF
私は如何にして詳解 MySQL 5.7を執筆するに至ったか
Mikiya Okuno
 
PDF
リレーショナルデータベースとの上手な付き合い方
Mikiya Okuno
 
PDF
Database qpstudy-okuno
Mikiya Okuno
 
PDF
RDBにおけるバリデーションをリレーショナルモデルから考える
Mikiya Okuno
 
PDF
人類は如何にして大切な データベースを守るべきか
Mikiya Okuno
 
PDF
カジュアルにMySQL Clusterを使ってみよう@MySQL Cluster Casual Talks 2013.09
Mikiya Okuno
 
PDF
なぜ、いまリレーショナルモデルなのか
Mikiya Okuno
 
PDF
MySQLをGUIで触ろう!! ~MySQL Workbenchのご紹介~
yoyamasaki
 
PDF
SQL+NoSQL!? それならMySQL Clusterでしょ。
yoyamasaki
 
PDF
MySQL Cluster 7.4で楽しむスケールアウト @DB Tech Showcase 2015/06
Mikiya Okuno
 
PDF
とあるギークのキーボード遍歴
Mikiya Okuno
 
PDF
MySQLとオープンソースビジネスの10年、そして未来へ
Open Source Software Association of Japan
 
PDF
@keny_lalaのMySQL道普請
Kentaro Kitagawa
 
PDF
MySQL Workbench 6.1 の紹介
yoyamasaki
 
PPTX
テストの視点からのモデリング(公開用) #wacate
Kinji Akemine
 
PDF
アジャイルにモデリングは必要か
Hiromasa Oka
 
PDF
リレーショナルデータベースとの上手な付き合い方 long version
Mikiya Okuno
 
PDF
What's New in MySQL 5.7 InnoDB
Mikiya Okuno
 
PDF
オンプレエンジニアがクラウドエンジニアを夢見て。じっと手を見る。
Akihiro Kuwano
 
データモデルについて知っておくべき7つのこと 〜NoSQLに手を出す前に〜
Mikiya Okuno
 
私は如何にして詳解 MySQL 5.7を執筆するに至ったか
Mikiya Okuno
 
リレーショナルデータベースとの上手な付き合い方
Mikiya Okuno
 
Database qpstudy-okuno
Mikiya Okuno
 
RDBにおけるバリデーションをリレーショナルモデルから考える
Mikiya Okuno
 
人類は如何にして大切な データベースを守るべきか
Mikiya Okuno
 
カジュアルにMySQL Clusterを使ってみよう@MySQL Cluster Casual Talks 2013.09
Mikiya Okuno
 
なぜ、いまリレーショナルモデルなのか
Mikiya Okuno
 
MySQLをGUIで触ろう!! ~MySQL Workbenchのご紹介~
yoyamasaki
 
SQL+NoSQL!? それならMySQL Clusterでしょ。
yoyamasaki
 
MySQL Cluster 7.4で楽しむスケールアウト @DB Tech Showcase 2015/06
Mikiya Okuno
 
とあるギークのキーボード遍歴
Mikiya Okuno
 
MySQLとオープンソースビジネスの10年、そして未来へ
Open Source Software Association of Japan
 
@keny_lalaのMySQL道普請
Kentaro Kitagawa
 
MySQL Workbench 6.1 の紹介
yoyamasaki
 
テストの視点からのモデリング(公開用) #wacate
Kinji Akemine
 
アジャイルにモデリングは必要か
Hiromasa Oka
 
リレーショナルデータベースとの上手な付き合い方 long version
Mikiya Okuno
 
What's New in MySQL 5.7 InnoDB
Mikiya Okuno
 
オンプレエンジニアがクラウドエンジニアを夢見て。じっと手を見る。
Akihiro Kuwano
 
Ad

More from Mikiya Okuno (16)

PDF
サポート一筋24+年のエンジニア、サポートのイロハは E4500に教わった。 Sun Microsystems 勉強会〜1994年頃から2000年頃の思い...
Mikiya Okuno
 
PDF
MySQL Cluster 新機能解説 7.5 and beyond
Mikiya Okuno
 
PDF
MySQL 5.7 トラブルシューティング 性能解析入門編
Mikiya Okuno
 
PDF
What's New in MySQL 5.7 Security
Mikiya Okuno
 
PDF
What's New in MySQL 5.7 Replication
Mikiya Okuno
 
PDF
What's New in MySQL 5.7 Optimizer @MySQL User Conference Tokyo 2015
Mikiya Okuno
 
PDF
リレーショナルな正しいデータベース設計
Mikiya Okuno
 
PDF
あなたが知らない リレーショナルモデル
Mikiya Okuno
 
PDF
MySQLトラブル解析入門
Mikiya Okuno
 
PDF
Mysql toranomaki
Mikiya Okuno
 
ODP
MySQl 5.6新機能解説@第一回 中国地方DB勉強会
Mikiya Okuno
 
PDF
Rdbms qpstudy-okuno
Mikiya Okuno
 
PDF
MySQL 5.6新機能解説@dbtechshowcase2012
Mikiya Okuno
 
PDF
Database smells
Mikiya Okuno
 
PDF
MySQL日本語利用徹底入門
Mikiya Okuno
 
ODP
Performance Schema @ MySQL Casual #2
Mikiya Okuno
 
サポート一筋24+年のエンジニア、サポートのイロハは E4500に教わった。 Sun Microsystems 勉強会〜1994年頃から2000年頃の思い...
Mikiya Okuno
 
MySQL Cluster 新機能解説 7.5 and beyond
Mikiya Okuno
 
MySQL 5.7 トラブルシューティング 性能解析入門編
Mikiya Okuno
 
What's New in MySQL 5.7 Security
Mikiya Okuno
 
What's New in MySQL 5.7 Replication
Mikiya Okuno
 
What's New in MySQL 5.7 Optimizer @MySQL User Conference Tokyo 2015
Mikiya Okuno
 
リレーショナルな正しいデータベース設計
Mikiya Okuno
 
あなたが知らない リレーショナルモデル
Mikiya Okuno
 
MySQLトラブル解析入門
Mikiya Okuno
 
Mysql toranomaki
Mikiya Okuno
 
MySQl 5.6新機能解説@第一回 中国地方DB勉強会
Mikiya Okuno
 
Rdbms qpstudy-okuno
Mikiya Okuno
 
MySQL 5.6新機能解説@dbtechshowcase2012
Mikiya Okuno
 
Database smells
Mikiya Okuno
 
MySQL日本語利用徹底入門
Mikiya Okuno
 
Performance Schema @ MySQL Casual #2
Mikiya Okuno
 

MySQLアーキテクチャ図解講座