mysql最新動向と便利ツールmysql workbench
DESCRIPTION
OSC広島2013での発表資料です。TRANSCRIPT
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
TP
S
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
Qu
eri
es
pe
r Se
con
d
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
Co
nn
ect
ion
s p
er
seco
nd
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
アプリケーション・ノード
管理ノード 管理ノード
REST JPA
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/)
• 中国地方でコミュニティイベントを企画して くれる方、絶賛募集中!!