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
「内積が見えると統計学も見える」第5回 プログラマのための数学勉強会 発表資料
PDF
ヤフー社内でやってるMySQLチューニングセミナー大公開
PDF
MyRocks Deep Dive
PDF
MySQL Buffer Management
PPTX
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
PDF
インフラエンジニアの綺麗で優しい手順書の書き方
PDF
例外設計における大罪
PDF
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
「内積が見えると統計学も見える」第5回 プログラマのための数学勉強会 発表資料
ヤフー社内でやってるMySQLチューニングセミナー大公開
MyRocks Deep Dive
MySQL Buffer Management
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
インフラエンジニアの綺麗で優しい手順書の書き方
例外設計における大罪
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」

What's hot (20)

PDF
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
PDF
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
PDF
Dockerfileを改善するためのBest Practice 2019年版
PDF
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
PDF
SQL大量発行処理をいかにして高速化するか
PPTX
初心者向けMongoDBのキホン!
PDF
マルチテナント化で知っておきたいデータベースのこと
PDF
JVMのGCアルゴリズムとチューニング
PDF
Where狙いのキー、order by狙いのキー
PDF
KafkaとAWS Kinesisの比較
PDF
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
PDF
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
PPTX
Redisの特徴と活用方法について
PDF
PostgreSQLアンチパターン
PDF
PostgreSQLアーキテクチャ入門
PPTX
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PDF
Fluentdのお勧めシステム構成パターン
PDF
いまさら聞けないPostgreSQL運用管理
PDF
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
PDF
コンテナの作り方「Dockerは裏方で何をしているのか?」
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Dockerfileを改善するためのBest Practice 2019年版
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
SQL大量発行処理をいかにして高速化するか
初心者向けMongoDBのキホン!
マルチテナント化で知っておきたいデータベースのこと
JVMのGCアルゴリズムとチューニング
Where狙いのキー、order by狙いのキー
KafkaとAWS Kinesisの比較
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Redisの特徴と活用方法について
PostgreSQLアンチパターン
PostgreSQLアーキテクチャ入門
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
Fluentdのお勧めシステム構成パターン
いまさら聞けないPostgreSQL運用管理
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
コンテナの作り方「Dockerは裏方で何をしているのか?」
Ad

Viewers also liked (6)

PDF
リレーショナルな正しいデータベース設計
PDF
Spiderストレージエンジンのご紹介
PDF
リレーショナルデータベースとの上手な付き合い方
PDF
私は如何にして詳解 MySQL 5.7を執筆するに至ったか
PDF
『バックドア基準の入門』@統数研研究集会
PDF
データベース設計徹底指南
リレーショナルな正しいデータベース設計
Spiderストレージエンジンのご紹介
リレーショナルデータベースとの上手な付き合い方
私は如何にして詳解 MySQL 5.7を執筆するに至ったか
『バックドア基準の入門』@統数研研究集会
データベース設計徹底指南
Ad

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

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

More from Mikiya Okuno (15)

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

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