1. DTrace で MySQL を斬る!
〜 DTrace による MySQL 解析ことはじめ 〜
奥野 幹也
@nippondanji
mikiya (dot) okuno (at) gmail (dot) com
2. 自己紹介
●
今日は個人として来ています。
– http://nippondanji.blogspot.com/
– http://www.google.com/profiles/mikiya.okuno
●
現職は MySQL サポートエンジニア。
– 2000 年にサン・マイクロシステムズ入社
– 2007 年に MySQL KK へ転職
– 気付くとまたサン・マイクロシステムズに
– オラクル・コーポレーションに・・・
3. MySQL について
●
オープンソースのリレーショナル・データベー
ス・マネージメント・システム
●
MySQL AB => Sun Microsystems => Oracle に
よって開発。
●
Web 開発においては圧倒的なシェア
– PHP/Perl/Java/Ruby/C/C++/ODBC...
●
使い易く、安定して、高速に動作するのがウリ
5. MySQL の特徴
●
ANSI SQL 標準に準拠(一部の文法を除 ● UNION
く。) ●
ビュー
●
種々のプラットフォームをサポート ●
サブクエリ
( Windows 、 Linux 、 Mac 、各種 UNIX 系 ● INFORMATION_SCHEMA
OS ) ●
SSL による通信
●
ストレージエンジンによりデータを格納す ●
Unicode をはじめとした各種文字コードの
るレイヤーを仮想化 サポート
●
ACID 準拠のトランザクション ●
全文検索
●
XA トランザクション ●
タイムゾーンのサポート
●
非同期 Master/Slave 型レプリケーション ●
多種多様な開発言語のサポート( C 、 C+
●
水平パーティショニング + 、 Java 、 Perl 、 PHP 、 Python 、 Ruby
( Range 、 List 、 Hash 、 Key ) など)
●
ストアドプロシージャ、ストアドファンク ●
ODBC による接続のサポート
ション、トリガ
6. MySQL 構造の特徴
●
モノリシックカーネル
●
シングルプロセス・マルチスレッド
●
1 セッション= 1 スレッド
●
ストレージエンジン API による仮想化
●
プラグイン API
●
GNU Bison による Lexical Scanner
●
ソースコードは C/C++ 混在( 100 万行程度)
7. MySQL の仕組み
クライアント クライアント クライアント
Java PHP ODBC
コネクション コネクション コネクション
スレッド スレッド スレッド
SQL の解析と最
適化は共通
パーサー・オプティマイザ・アクセス管理 等
ストレージエンジン API データの格納や
MyISAM InnoDB MySQL アクセス方法は
Cluster ストレージエン
テーブル
table_name.MYI
スペース
ジンごとに違う
table_name.MYD NDB
ログファイル API
MySQL サーバ
データノード
データノード
データノード
データノード
8. MySQL の構造を知る!
●
Web ページ
– http://forge.mysql.com/wiki/MySQL_Internals
●
書籍
– 詳解 MySQL ( Understanding MySQL
Internals )
– Expert MySQL
– MySQL データベース構築バイブル
●
ソースコード!!