MySQL最新動向と便利ツール
MySQL Workbench
日本MySQLユーザ会
やまさき よしあき(@yyamasaki1)
日本MySQLユーザ会とは
• 日本でのMySQLの普及、ユーザ間のコミュニ
ケーションを図るための会
• 現在の主な活動は ML での意見交換
– 時々、コミュニティイベントやオフ会も開催
• MySQL に興味がある方はどなたでも入会可
能。会費も無し。退会も自由。
日本MySQLユーザ会とは
• 略称はMyNA(MySQL Nippon Association)
• ホームページ
http://www.mysql.gr.jp/
• 入会申請
http://www.mysql.gr.jp/ml.html
MySQLとは
• 世界で最も使われているオープンソースの
RDBMS(リレーショナル・データベース・マネー
ジメント・システム)
• Facebook、Twitter、eBay、Mobage、Greeなど
の大規模なWebサイトやオンラインゲームで
の利用実績も豊富
• 1995年に旧MySQL社によって最初のバージョ
ン1.0がリリースされ、その後バージョンアップ
を重ねている
MySQLとは
• 2008年にサン・マイクロシステムズがMySQL
社を買収し、その後2010年にオラクルがサ
ン・マイクロシステムズを買収したため、現在
はオラクルのオープンソース製品となってい
る
MySQLの将来心配している方に
• オラクルの買収以降、開発はより活発になっ
ています(次ページ以降参照)
• 今も変わらずGPLライセンスでリリースしてい
ます
オラクルになってから開発はより活発に
• InnoDB(※)は、元々Innobase社によって開発
されていたが、Innobase社は2005年にオラク
ルに買収されていた
⇒オラクルによるサン買収によって、MySQL本体
の開発チームとInnoDBの開発チームが同じ
会社で仕事できるようになった
• 開発チームの人員は、サンを買収した当初よ
りも約2倍に(2013年9月時点)
※InnoDB:トランザクションに対応したストレージエンジン
MySQLユーザに最も利用されているストレージエンジン
オラクルになってから開発はより活発に
• 続々と、新バージョンをリリース
– MySQL 5.5(2010年)
– MySQL 5.6(2013年)
– MySQL Cluster 7.1(2010年)
– MySQL Cluster 7.2(2012年)
– MySQL Cluster 7.3(2013年)
– MySQL Workbench 5.2(2010年)
– MySQL Workbench 6.0(2013年)
MySQL Connect 2013開催!!
• Oracle Open World開催に合わせて、 MySQLと
しての独立したイベントを開催
(2013年9月21日~9月23日、サンフランシスコで開催)
• 基調講演、 Facebook、Twitter、LinkedIn、
PayPalによるパネルディスカッション、など、全
部で80以上のセッションを開催
• Oracle製品の中で単独の製品で独立したイベ
ントを開催しているのは、MySQL以外にはJava
のJava Oneだけ
MySQL Connect 2013開催!!
• セッション資料は、今後こちらで順次公開され
る予定
MySQLの最新動向
• MySQL
– 最新のGAは5.6 (2013年2月にリリース)
– DMRとして、5.7をリリース
(今までと同じく、GPLライセンスで提供)
– Lab版で、マルチソースレプリケーション、MySQL Fablic、JSON UDF、
Hadoop Applier を提供中
• MySQL Cluster
– 最新のGAは7.3 (2013年6月にリリース)
– 7.3では、外部キーが実装されRDBMSとして完全な状態に
• MySQL Workbench
– 最新のGAは6.0 (2013年8月にリリース)
– インターフェースを刷新し、クエリ結果の縦型表示、外部キーの参照
行を削除するDELETE文の自動生成、などの機能を追加
GA、DMR、Labって何?
• GA(General Available/General Availability)
– 製品版
– http://dev.mysql.com/downloads/ からダウンロード可能
• DMR(Development Milestone Releases)
– 開発途上版
– http://dev.mysql.com/downloads/ からダウンロード可能
⇒Development Releases タブを選択
• Lab
– DMRよりも先進的/実験的な機能を実装した、実験版
(Laboratory:実験室)
– http://labs.mysql.com/ からダウンロード可能
MySQL 5.6の場合
Optimizer:
MRR, ICP, File Sort
InnoDB:
Split Kernel Mutex, MT Purge
Replication:
Crash-Safe, Multi-Thread Slave,
Checksums
Memcached API
New P_S
Partitioning
Improvements
RC
Nov 2012
DMR1*
April 2011
DMR2
Oct 2011
Optimizer:
BKA, New EXPLAIN,
Traces
InnoDB:
Dump/Restore
Buffer Pool
More P_S
DMR3
Dec 2011
Optimizer:
Sub-Queries
InnoDB:
Full Text Index, Read-
Only Optimizations
Condition
Handling
Fractional
Seconds
DMR4
April 2012
Optimizer:
JSON EXPLAIN, Sub-
Queries
Replication:
GTIDs
TIMESTAMP &
DATESTAMP
More P_S
DMR5
Aug 2012
InnoDB:
TT, Online DDL,
Memcached API
Replication:
Binary Log Group
Commit
Password Mgmt
More
Partitioning
New Server
Defaults
More
Partitioning
More GTID, TT
MySQL 5.6 主な強化点
• InnoDB: トランザクション・スループットの向上
• オプティマイザ: パフォーマンス&スケーラビリティ
• パフォーマンス・スキーマ: より詳細な統計情報
• レプリケーション: さらなる可用性とデータの整合性
• 「NotOnlySQL」オプション: さらなる柔軟性
MySQL 5.6:InnoDB
• レガシーなボトルネックの削減
• スレッドの同時実行性能の向上
• 参照専用トランザクションの実装
• SSDへの最適化
リソースの有効活用による性能と拡張性能向上
• オンラインでのDDL実行
• テーブルスペースの可搬性の向上
• バッファプールのダンプ&リストア
可用性の向上&拡張性の改良
• NoSQLでのInnoDBへのキーバリュー型アクセス
開発の柔軟性の向上
MySQL 5.6:オプティマイザ
• サブクエリの最適化
• ファイルソートの性能向上
• Index Condition PushdownによるJOIN性能の向上
• Batched Key AccessおよびMulti-Range ReadによるJOIN性能の向上
SQL実行性能の向上&処理時間の短縮
• INSERT, UPDATE, DELETEでのEXPLAIN文の利用
• JSONフォーマットでのEXPLAIN文の出力
• Optimizer Traces
より詳細な状況監視
MySQL 5.6:RDBMSとNoSQLの両立
InnoDB Storage Engine
MySQL Server Memcached plugin
Application
SQL
(MySQL Client)
NoSQL
(Memcached
Protocol)
mysqld
• InnoDBに素早く、簡単にアクセス
– Memcached API経由のアクセス
– 既存のMemcachedクライアントを使用
– SQL変換をバイパス
• NotOnlySQLアクセス
– キー・バリュー操作用
– 複雑なクエリやJOIN、FKにはSQLを使
用
• 実装
– mysqldにMemcachedをデーモン・プラ
グインとして統合
– ネイティブInnoDB APIをmemcachedプ
ロトコルにマッピング
– 超低レイテンシ用の共有プロセス・ス
ペース
MySQL 5.6:RDBMSとNoSQLの両立
0
10000
20000
30000
40000
50000
60000
70000
80000
8 32 128 512
TPS
Client Connections
MySQL 5.6: NoSQL Benchmarking
Memcached API
SQL
Customized Java-based App Test Harness
Oracle Linux 6
Intel(R) Xeon(R) 2.0 x86_64
MySQL leveraging:
- 8 available CPU threads
- 2 GHz, 16GB RAM
Up to 9x Higher “SET / INSERT” Throughput
blogs.oracle.com/mysqlinnodb/entry/new_enhancements_for_innodb_memcached
MySQL 5.6:レプリケーション
•マルチスレッド スレーブ
•バイナリログのグループコミット
•行ベース レプリケーションの転送データ量の削減
パフォーマンス
•Global Transaction Identifiers
•レプリケーション フェールオーバー & 管理ユーティリティ
•スレーブ&バイナリログの耐障害性向上
フェールオーバー & リカバリ
•レプリケーション チェックサム
データの正確性
•遅延レプリケーション
•リモートからのバイナリログのバックアップ
•ログへのメタデータの追加
開発&管理の簡素化
MySQL 5.6:パフォーマンススキーマ
• パフォーマンスに関する統計情報を自動収集
• リソース消費の多いクエリの特定、競合の多
いインデックスの特定、など、ボトルネックの
調査に役立つ
• MySQL 5.5よりも使いやすくなった
MySQL 5.7 DMR
• 今までと同じくGPLライセンスでリリース
• MySQL 5.6をベースに、さらなる改善、機能
強化を実施
• バグレポートはこちらまで
– http://bugs.mysql.com
MySQL 5.7 DMR: Sysbenchによるベンチマーク
• Sysbench Point Select
Intel(R) Xeon(R) CPU X7560 x86_64
4 sockets x 8 cores-HT (64 CPU threads)
2.27GHz, 256G RAM
Oracle Linux 6.2
95% Faster than MySQL 5.6
172% Faster than MySQL 5.5
0
100000
200000
300000
400000
500000
600000
8 16 32 64 128 256 512 1024
QueriesperSecond
Concurrent User Sessions
MySQL-5.7
MySQL-5.6
MySQL-5.5
500,000 QPS
MySQL 5.7 DMR: Connections / second
• 新規コネクション生成をより高速に
0
5000
10000
15000
20000
25000
30000
35000
40000
With Selects Without Select
Connectionspersecond
MySQL 5.7.2
MySQL 5.6.9
• mysql-bench
• 25 concurrent client threads
• Executing connect/select/disconnect
• 100000 iterations each
+32% +64%
Facebook からのフィードバックを受けて実装
MySQL 5.7 DMR:オプティマイザ
• 実行中のクエリに対してもEXPLAINを取得可能
• JSONフォーマットのEXPLAINを拡張
EXPLAIN [FORMAT=(JSON|TRADITIONAL)] [EXTENDED] FOR CONNECTION <id>;
MySQL 5.7 DMR:その他
• InnoDB
– オンラインDDLを更に追加
– 一時表をInnoDBで作成
– InnoDBの一時表に対するパフォーマンスを改善
• パフォーマンススキーマ
– 情報収集項目を更に増加
Lab版:MySQL Fabric
• シャーディング(データ分割)による拡張性の
向上
MySQL Fabric
Connector
Application
Read-slaves
SQL
Master group
Read-slaves
Master group
Lab版:マルチソースレプリケーション
Binlog
Master 1
Binlog
Master 2
…
…
Binlog
Master N
IO 1
Relay 1
Coordinator
W1 W2 … WX
IO 2
Relay 2
Coordinator
W1 W2 … WX
…
…
Coordinator
W1 W2 … WX
IO N
Relay N
Coordinator
W1 W2 … WX
Slave
• 複数のマスターのデータを集約
Lab版:MySQL JSON UDFs
• MySQLでJSONを扱うためのUDF(ユーザ定義
関数)
• 以下の資料に使い方の例が掲載されている
– ドキュメントデータベースとして MySQLを使う!?
~MySQL JSON UDF~
Lab版:Hadoop Applier
• MySQLからHadoopへのリアルタイムストリー
ミング
MySQL Clusterとは?
• MySQLとは開発ツリーの異なる別製品
• 共有ディスクを使わずに、アクティブ-アクティブのクラスタ構成が組める
• 元々はSQLを使わないデータベースだったが、MySQLと統合され
SQLも使えるようになった
(NoSQL(KVS)とSQLの両方が使えるデータベース)
向いているシステム
• 高可用性が求められるシステム
• 同時多発的に大量のトランザクションが発生するシステム
• 読込み処理だけでなく、書込み処理に対しても拡張性が求められる
システム
MySQL Cluster: Overview
• 自動シャーディング、マルチマスター
• ACID 準拠のトランザクション, OLTP + Real-Time Analytics
読込み/書込み処理
に対する高い拡張性
• シェアードナッシング、単一障害点無し
• 自動修復 + オンラインオペレーション
99.999% の高可用性
• オープンソース + 商用版
• コモディディハードウェア + 充実した管理ツール、監視ツール
低い TCO
• Key/Value + SQL の柔軟性
• SQL + Memcached + JavaScript + Java + JPA + HTTP/REST & C++
SQL + NoSQL
• インメモリデータベース + ディスクデータ
• 非常に低いレイテンシ、短いアクセス時間
リアルタイム
MySQL Clusterの使用事例
• 携帯電話ネットワーク
HLR / HSS
課金, 認証, VLR
認証, 追跡接続
サービス, 課金
位置情報
の更新
プリペイ&
ポストペイ課金
• 大量の書き込みトランザクション
• 3ms未満のデータベースレスポンス
• 停止時間 & トランザクション消失 = ビジネスの損失
MySQL Cluster in Action: http://bit.ly/oRI5tF
MySQL Clusterのアーキテクチャ
データ・ノード
ノード・グループ1
F1
F3
F3
F1
ノード1ノード2
ノード・グールプ 2
F2
F4
F4
F2
ノード3ノード4
アプリケーション・ノード
管理ノード管理ノード
RESTJPA
MySQL Cluster 7.3
 外部キー
 Connection Thread Scalability
 MySQL 5.6との統合
 Auto-Installer
 NoSQL API : JavaScript for
node.js
MySQL Cluster 7.3
• 大幅に性能を向上
DBT2 Benchmark
Single MySQL Server
Single Data Node
128 client connections
8.5x
MySQL Cluster 7.3
• MySQL 5.6と統合
– MySQL 5.6での性能向上の恩恵を受けられる
• 外部キ―を実装
– RDBMSとして完全な形に
• Auto-Installer
– インストール、設定をより簡単に
• Node.js API
– NoSQLのインターフェースを追加
MySQL Cluster のお勧め書籍
• ”漢のコンピュータ道”で有名な奥野さんの
書籍です。MySQL Clusterのノウハウが
ぎっしり詰まった1冊です。
(http://gihyo.jp/book/にて、電子書籍版もあります)
MySQL Workbench 6.0
• MySQLの管理・開発統合環境
• GUIでMySQL環境を触れるツール
• 元々は機能毎にツールが分かれていたが、それらが
1つに統合され、更にデータモデリング機能なども追
加され、MySQL Workbenchとしてリリースされている
– MySQL Query Browser:GUIでSQL文を実行できるツール
– MySQL Administrator:GUIでのMySQLサーバの管理ツール
– MySQL Migration Toolkit:他データベースからMySQLへの
移行を支援するツール
MySQL Workbench で出来ること
• 管理
– Server起動/停止、システム変数確認、ステータス変
数確認、
ログ確認、ユーザ管理、セッション管理、など
• 開発
– SQLエディタ、SQL Snippets(ステートメント再利用)、
ビジュアルExplain、など
• 設計
– E-R図作成、フォワードエンジニアリング、リバースエ
ンジニアリング、
など
MySQL Workbench で出来ること
• マイグレーション
– 他DBからMySQLへの移行を支援できるマイグ
レーションウィザード
MySQL Workbench 6.0 のデモ
起動画面
管理
• MySQLサーバの稼働状況や各機能の設定を確認
管理
• SHOW PROCESS LISTの結果を確認
管理
• ステータス変数やシステム変数を確認
管理
• ユーザ管理、権限管理
管理
• データのエクスポート/インポート
開発
• SQLエディタ
開発
• ビジュアルExplain(MySQL5.6以降で対応)
設計
• データモデルの作成
設計
• ER図作成、フォワード/リバース エンジニアリング
マイグレーション
• マイグレーションウィザード
(他DBからMySQLへの移行をアシスト)
今後のイベントの紹介
• 10/19(土)、20(日) OSC東京
– ブース出展とセミナー開催
• 10/25(金) MySQL Casual Talks Vol.5
– http://www.zusaar.com/event/1086003
• 11/7(木) MySQL勉強会 in 大阪(第5回)
– http://atnd.org/events/44157
今後のイベントの紹介
• 11/8(金)、11/9(土) KOF(関西オープンフォーラム)
– ブース出展とセミナー開催
– セミナー:States of Dolphin - MySQL最新技術情報2013秋 -
https://k-of.jp/2013/session/466
– セミナー:SQL+NoSQL!? それならMySQL Clusterでしょ。
https://k-of.jp/2013/session/467
• 11/16(土) OSC福岡
– ブース出展とセミナー開催
まとめ
• MySQLの開発は順調に進んでいて、
新バージョンを続々リリースしている
• MySQLを触ってフィードバックをしよう
– ブログ等での情報発信
– コミュニティイベントでの発表
– バグレポート (http://bugs.mysql.com/)
• 中国地方でコミュニティイベントを企画して
くれる方、絶賛募集中!!

MySQL最新動向と便利ツールMySQL Workbench