SlideShare a Scribd company logo
Submit Search
Upload
カジュアルにMySQL Clusterを使ってみよう@MySQL Cluster Casual Talks 2013.09
Report
Mikiya Okuno
MySQL Technical Analyst at Oracle
Follow
•
24 likes
•
18,191 views
1
of
40
カジュアルにMySQL Clusterを使ってみよう@MySQL Cluster Casual Talks 2013.09
•
24 likes
•
18,191 views
Download Now
Download to read offline
Report
Technology
MySQL Cluster Casual Talksで使った資料です。Slideshareの表示ではフォントがおかしいのでダウンロードして使ってください。
Read more
Mikiya Okuno
MySQL Technical Analyst at Oracle
Follow
Recommended
MySQl 5.6新機能解説@第一回 中国地方DB勉強会
Mikiya Okuno
7.2K views
•
70 slides
MCCT20130926 tsakuradac
Takeshi Sakurada
12K views
•
36 slides
Tritonn (MySQL5.0.87+Senna)からの mroonga (MySQL5.6) 移行体験記
Kentaro Yoshida
14.1K views
•
65 slides
MySQL 4.0で9年動き続けたサーバを リプレイスしてバージョンアップした話
Takahiro Okumura
54.7K views
•
63 slides
MySQL Cluster 7.4で楽しむスケールアウト @DB Tech Showcase 2015/06
Mikiya Okuno
37.5K views
•
46 slides
No sql with mysql cluster (MyNA・JPUG合同DB勉強会)
Shinya Sugiyama
6.1K views
•
28 slides
More Related Content
What's hot
SQL+NoSQL!? それならMySQL Clusterでしょ。
yoyamasaki
5.4K views
•
34 slides
What's New in MySQL 5.7 InnoDB
Mikiya Okuno
13.9K views
•
56 slides
お金が無いときのMySQL Cluster頼み
aoike
4.1K views
•
22 slides
Art of MySQL Replication.
Mikiya Okuno
7.6K views
•
63 slides
MySQL Clusterを運用して10ヶ月間
hiroi10
6.9K views
•
37 slides
MySQL Cluster 解説 & MySQL Cluster 7.3 最新情報
yoyamasaki
3.6K views
•
74 slides
What's hot
(20)
SQL+NoSQL!? それならMySQL Clusterでしょ。
yoyamasaki
•
5.4K views
What's New in MySQL 5.7 InnoDB
Mikiya Okuno
•
13.9K views
お金が無いときのMySQL Cluster頼み
aoike
•
4.1K views
Art of MySQL Replication.
Mikiya Okuno
•
7.6K views
MySQL Clusterを運用して10ヶ月間
hiroi10
•
6.9K views
MySQL Cluster 解説 & MySQL Cluster 7.3 最新情報
yoyamasaki
•
3.6K views
Mysql toranomaki
Mikiya Okuno
•
22.3K views
[C21] MySQL Cluster徹底活用術 by Mikiya Okuno
Insight Technology, Inc.
•
4.3K views
MySQL 5.7 トラブルシューティング 性能解析入門編
Mikiya Okuno
•
4.5K views
リーダブルパスワード - SQLアンチパターンより抜粋 -
hiro345
•
5K views
最近始めたあなたも今日から語れるようになるMySQLの{概要と最新情報}入門@
sakaik
•
1.7K views
僕らのMySQL5.6移行記(仮)
Yutaka Hoshino
•
15K views
MySQLの冗長化 2013-01-24
Yoshihiko Matsuzaki
•
20.9K views
mikasafabric for MySQL
yoku0825
•
1.5K views
MySQLトラブル解析入門
Mikiya Okuno
•
17.1K views
MySQL5.7 GA の Multi-threaded slave
Takanori Sejima
•
12.9K views
AWSのRedHatにMySQL最速インストール
sakaik
•
3.2K views
WindowsでMySQL入門
Hidenori Ishii
•
12.7K views
MySQL5.6でGTIDを試してそっと閉じた
Emma Haruka Iwao
•
18.2K views
MySQL 5.7の次のMySQLは
yoku0825
•
7.8K views
Similar to カジュアルにMySQL Clusterを使ってみよう@MySQL Cluster Casual Talks 2013.09
What's New in MySQL 5.7 Replication
Mikiya Okuno
11.1K views
•
59 slides
States of Dolphin - MySQL最新技術情報2013秋 -
yoyamasaki
3.2K views
•
69 slides
MySQL Cluster 新機能解説 7.5 and beyond
Mikiya Okuno
6.3K views
•
58 slides
MySQLアーキテクチャ図解講座
Mikiya Okuno
26.3K views
•
34 slides
5分で作るMySQL Cluster環境
yoyamasaki
947 views
•
29 slides
LINEのMySQL運用について
LINE Corporation
3.1K views
•
63 slides
Similar to カジュアルにMySQL Clusterを使ってみよう@MySQL Cluster Casual Talks 2013.09
(20)
What's New in MySQL 5.7 Replication
Mikiya Okuno
•
11.1K views
States of Dolphin - MySQL最新技術情報2013秋 -
yoyamasaki
•
3.2K views
MySQL Cluster 新機能解説 7.5 and beyond
Mikiya Okuno
•
6.3K views
MySQLアーキテクチャ図解講座
Mikiya Okuno
•
26.3K views
5分で作るMySQL Cluster環境
yoyamasaki
•
947 views
LINEのMySQL運用について
LINE Corporation
•
3.1K views
MySQLとオープンソースビジネスの10年、そして未来へ
Open Source Software Association of Japan
•
972 views
OSC2017 Hokkaido. MySQL今こそインストールを極めよう~改めて考える環境構築~
sakaik
•
1.1K views
MySQLを割と一人で300台管理する技術
yoku0825
•
50.4K views
Sql server 構築 運用 tips
Masayuki Ozawa
•
3.7K views
Handlerさんコンニチワ
yoku0825
•
10.4K views
作って分かるKnockoutJS@ALM11月
Takuya Ueda
•
3K views
Which is your favorite mysqld
yoku0825
•
1.6K views
Nodeにしましょう
Yuzo Hebishima
•
294 views
LINEのMySQL運用について 修正版
LINE Corporation
•
134.2K views
オープニングセッション
konekto
•
630 views
オープンソース・データベースの最新事情
Meiji Kimura
•
3K views
A13 MySQL & NoSQL~Best of both world~ by Philip Antoniades & Ryusuke Kajiyama
Insight Technology, Inc.
•
1.5K views
MySQLやSSDとかの話・後編
gree_tech
•
5.1K views
Oracle Database Standard EditionでセミオンラインDDL
Kentaro Kitagawa
•
1.7K views
More from Mikiya Okuno
私は如何にして詳解 MySQL 5.7を執筆するに至ったか
Mikiya Okuno
8.1K views
•
26 slides
リレーショナルデータベースとの上手な付き合い方
Mikiya Okuno
18.6K views
•
39 slides
リレーショナルデータベースとの上手な付き合い方 long version
Mikiya Okuno
18.3K views
•
74 slides
What's New in MySQL 5.7 Security
Mikiya Okuno
9.7K views
•
36 slides
とあるギークのキーボード遍歴
Mikiya Okuno
9.4K views
•
22 slides
What's New in MySQL 5.7 Optimizer @MySQL User Conference Tokyo 2015
Mikiya Okuno
17.2K views
•
54 slides
More from Mikiya Okuno
(20)
私は如何にして詳解 MySQL 5.7を執筆するに至ったか
Mikiya Okuno
•
8.1K views
リレーショナルデータベースとの上手な付き合い方
Mikiya Okuno
•
18.6K views
リレーショナルデータベースとの上手な付き合い方 long version
Mikiya Okuno
•
18.3K views
What's New in MySQL 5.7 Security
Mikiya Okuno
•
9.7K views
とあるギークのキーボード遍歴
Mikiya Okuno
•
9.4K views
What's New in MySQL 5.7 Optimizer @MySQL User Conference Tokyo 2015
Mikiya Okuno
•
17.2K views
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
Mikiya Okuno
•
20.9K views
なぜ、いまリレーショナルモデルなのか
Mikiya Okuno
•
5.2K views
データモデルについて知っておくべき7つのこと 〜NoSQLに手を出す前に〜
Mikiya Okuno
•
129.8K views
人類は如何にして大切な データベースを守るべきか
Mikiya Okuno
•
4.5K views
RDBにおけるバリデーションをリレーショナルモデルから考える
Mikiya Okuno
•
11.1K views
リレーショナルな正しいデータベース設計
Mikiya Okuno
•
20.2K views
あなたが知らない リレーショナルモデル
Mikiya Okuno
•
31.2K views
データベース設計徹底指南
Mikiya Okuno
•
114.4K views
Rdbms qpstudy-okuno
Mikiya Okuno
•
11.2K views
Database qpstudy-okuno
Mikiya Okuno
•
8.3K views
MySQL 5.6新機能解説@dbtechshowcase2012
Mikiya Okuno
•
27.8K views
Database smells
Mikiya Okuno
•
4.9K views
MySQL日本語利用徹底入門
Mikiya Okuno
•
9.9K views
Performance Schema @ MySQL Casual #2
Mikiya Okuno
•
5K views
Recently uploaded
概念モデリングワークショップ 基礎編
Knowledge & Experience
18 views
•
71 slides
さくらのひやおろし2023
法林浩之
24 views
•
58 slides
01Booster Studio ご紹介資料
ssusere7a2172
186 views
•
19 slides
DLゼミ: MobileOne: An Improved One millisecond Mobile Backbone
harmonylab
38 views
•
30 slides
概念モデリングワークショップ 設計編
Knowledge & Experience
10 views
•
37 slides
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
NTT DATA Technology & Innovation
197 views
•
33 slides
Recently uploaded
(10)
概念モデリングワークショップ 基礎編
Knowledge & Experience
•
18 views
さくらのひやおろし2023
法林浩之
•
24 views
01Booster Studio ご紹介資料
ssusere7a2172
•
186 views
DLゼミ: MobileOne: An Improved One millisecond Mobile Backbone
harmonylab
•
38 views
概念モデリングワークショップ 設計編
Knowledge & Experience
•
10 views
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
NTT DATA Technology & Innovation
•
197 views
「概念モデリング自動化に向けた第一歩」 ~ ChatGPT・Open AI 活用による開発対象のモデル化
Knowledge & Experience
•
6 views
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
NTT DATA Technology & Innovation
•
119 views
テストコードってすごい.pptx
cistb220msudou
•
71 views
JJUG CCC.pptx
Kanta Sasaki
•
6 views
カジュアルにMySQL Clusterを使ってみよう@MySQL Cluster Casual Talks 2013.09
1.
カジュアルに MySQL Cluster を 使ってみよう! @MySQL Cluster Casual Talks 2013 奥野 幹也 @nippondanji mikiya (dot) okuno (at) gmail (dot) com
2.
免責事項 ● 本プレゼンテーションにおいて示されている見解は、 私自身の見解であって、オラクル・コーポレーション の見解を必ずしも反映したものではありません。ご 了承ください。
3.
自己紹介 ● MySQL サポートエンジニア – 日々のしごと ● ● ● ● ライフワーク – 自由なソフトウェアの普及 ● ● トラブルシューティング全般 Q&A 回答 パフォーマンスチューニング など オープンソースではない ブログ – – 漢のコンピュータ道 http://nippondanji.blogspot.com/ 今日は個人として 参加しています。
4.
MySQL Cluster とは!
5.
MySQL の姉妹製品 ● MySQL のストレージエンジンとして使える。 – ● ● ● ● ● CREATE
TABLE hoge (…) ENGINE NDB; トランザクション対応 並列分散型のデータベース HA 機能 ハイパフォーマンス コミュニティ版は GPLv2
6.
動作イメージ アプリケーション アプリケーション アプリケーション 通常の MySQL プロトコル SQL
ノード SQL ノード MySQL サーバー SQL ノード MGM API NDB API データ ノード データ データ ノード ノード データ ノード データ ノード 管理ノード
7.
速いの? ● 結論: 1 台の性能では
InnoDB のほうが上 – ● ただし NDB API は爆速 ノードを並べてナンボ – データノード ● ● – SQL ノード ● ● 負荷分散 データ量の増加 SQL 解析の負荷分散 ノードを増やしても性能が伸びない処理もある – 少ししか行を取ってこないスキャン ● sysbench が遅い!!
8.
MySQL Cluster でできること 高可用性 ● SPOF
の排除 ● HA 機能搭載 ● 遠隔地へのレプリケーション パフォーマンス ● スケールアウト ● リアルタイム処理 ● NoSQL 低価格 ● GPL 版は無償 ● 商用ライセンスもお手頃 http://wwwjp.mysql.com/products/ ● コモディティなハードウェアで構築可能
9.
3 種類のノード ● 管理ノード – – ● データノード – ● クラスターの構成情報を管理 各種操作を発行 データとトランザクションを司る SQL ノード
/API ノード – NDB ストレージエンジンを搭載した MySQL サーバ ● – NDB API を経由してデータノードへアクセス アプリケーションが SQL ノードを介さず直接 NDB API を叩くことも可。( API ノード)
10.
シェアードナッシング = No SPOF データノード
1 データノード 3 フラグメント 1 プライマリ フラグメント 3 セカンダリ フラグメント 2 プライマリ フラグメント 4 セカンダリ フラグメント 1 セカンダリ フラグメント 3 プライマリ フラグメント 2 セカンダリ フラグメント 4 プライマリ データノード 2 データノード 4 ノードグループ 1 ノードグループ 2
11.
ひとつコケても大丈夫!! データノード 1 データノード 3 dead dead フラグメント
2 プライマリ フラグメント 4 セカンダリ フラグメント 1 プライマリ フラグメント 3 プライマリ フラグメント 2 セカンダリ フラグメント 4 プライマリ データノード 2 データノード 4 ノードグループ 1 ノードグループ 2
12.
ふたつコケても大丈夫!! データノード 1 データノード 3 dead dead dead dead フラグメント
1 プライマリ フラグメント 3 プライマリ フラグメント 2 プライマリ フラグメント 4 プライマリ データノード 2 データノード 4 ノードグループ 1 ノードグループ 2
13.
これはアウト!! データノード 1 データノード 3 dead dead フラグメント
2 プライマリ フラグメント 4 セカンダリ dead dead フラグメント 2 セカンダリ フラグメント 4 プライマリ データノード 2 データノード 4 ノードグループ 1 ノードグループ 2
14.
とりあえずインストール ● ● ● ● パッケージをインストールする config.ini と my.cnf
を書く ユーザーやデータディレクトリをつくる プロセスを起動する – 管理ノード→データノード→待つ→ SQL ノード
15.
デモ
16.
パフォーマンスの 勘所
17.
最新のバージョンを使う ● バージョンが新しいほど高速化している! – 6.2 ● SQL
ノードからデータノードへの接続を複数化 – 6.3 ● スレッドのバインディング ● Distribution Awareness ● TC 選択のロジックを改善 ● 主キー / ユニークキーを用いた更新の効率化 ● 圧縮 LCP/ バックアップ ● epoll – 7.0 ● データノードのマルチスレッド化 ● メッセージ通信の改善 ● データノードのオンライン拡張
18.
最新のバージョンを使う ● つづき – 7.1 ● ● – 7.2 ● ● ● – ndbinfo BLOB へのアクセス高速化 MySQL 5.5 pushdown
join memcached の追加 性能だけでなく バージョンが上がる ごとに機能も増えて どんどん便利に! 7.3 ● ● ● MySQL 5.6 – Batched Key Access Join – Semi-Join 最適化(サブクエリ) 外部キー NDB API のボトルネック解消
19.
非公式ベンチマーク ● ● 2011/04/11 ( 7.1
) – MySQL Cluster doing 6.82M reads per second ● 8 データノード http://mikaelronstrom.blogspot.jp/2011/04/mysqlcluster-doing-682m-reads-per.html 2011/04/12 ( 7.1 ) – MySQL Cluster running 2.46M updates per second! ● 8 データノード http://mikaelronstrom.blogspot.jp/2011/04/mysqlcluster-running-246m-updates-per.html
20.
非公式ベンチマーク(つづき) ● 2012/05/16 – MySQL Cluster 7.2.7
achieves 1BN update transactions per minute ● ● ● ● 19.5M transactions/s 相当 30 データノード、各 8ldm スレッド http://mikaelronstrom.blogspot.jp/2012/05/mysqlcluster-727-achieves-1bn-update.html 2012/05/22 – MySQL Cluster 7.2 achieves 4.3BN reads per minute ● ● ● 72M reads/s 相当 30 データノード、各 8ldm スレッド http://mikaelronstrom.blogspot.jp/2012/05/mysqlcluster-72-achieves-43bn-reads.html
21.
非公式ベンチマーク(つづき) ● 2012/02/15 ( 7.2
) – 1.05BN QPM using MySQL Cluster 7.2 ● 17.5M reads/s 相当 ● 8 データノード ● 主にスレッドのバインディングによる効果 ● http://mikaelronstrom.blogspot.jp/2012/02/105bn-qpmusing-mysql-cluster-72.html
22.
非公式ベンチマーク(つづき) ● 2012/05/16 ( 7.2
) – MySQL Cluster 7.2.7 achieves 1BN update transactions per minute 19.5M transactions/s 相当 ● 30 データノード、各 8ldm スレッド ● http://mikaelronstrom.blogspot.jp/2012/05/mysqlcluster-727-achieves-1bn-update.html 2012/05/22 ( 7.2 ) ● ● – MySQL Cluster 7.2 achieves 4.3BN reads per minute ● ● ● 72M reads/s 相当 30 データノード、各 8ldm スレッド http://mikaelronstrom.blogspot.jp/2012/05/mysqlcluster-72-achieves-43bn-reads.html
23.
スレッド数の調整 ● バージョン 7.0 以降 – MaxNoOfExecutionThreads ● ● – 7.0
〜 7.1 … 最大 8 7.2 〜 7.3 … 最大 36 TheadConfig ● より細かな指定が可能 – – スレッドごとに特定の CPU にバインディング バインディングするものとしないものの混在が可能 ThreadConfig=ldm{count=4,cpubind=1,2,3,4}, main={cpubind=5},io={cpubind=5},rep={cpubind=6}, tc{cpubind=7},recv={cpubind=8}
24.
データノードの追加による スケールアウト ● ● 主キーを使った検索(ルックアップ)はデータノード数に応じ てスケールする データノードは最大 48 台まで。 SQL
ノード 各データノードに 負荷が均等に分散
25.
細かい範囲検索が苦手 SQL ノード 1. スキャンリクエスト データノード TC すべてのデータノードが 応答を強いられる 3.
データを返送 データノード 2. 他のノードへリクエスト データノード
26.
スキャンの性能特性 ● フェッチするレコード数が少ない – – ● データノードが増えてもスキャン回数は頭打ち 遅い!! フェッチするレコード数が多い – – – データノードで並列処理できるためノード数に応じて処理 時間が短くなる Engine Condition Pushdown
で並列で絞り込みが可能 速い!!
27.
Engine Condition Pushdown SQL
ノード SQL ノード WHERE 句で 絞り込み WHERE 句で 絞り込み データノード Pushdown なし データノード Pushdown あり
28.
ユーザー定義パーティション users テーブル diaries テーブル users テーブル diaries テーブル user_id = 100 user_id = 100 user_id =
100 user_id = 100 user_id = 100 user_id = 100 user_id = 100 通常のパーティショニング ユーザー定義パーティショニング
29.
ユーザー定義パーティションの効能 ● スキャンがスケールアウト – – – ● 超重要!! 特定のデータノードだけに問い合わせれば良くなるため スケールアウトさせるにはデータノードを追加 Pushdown Join にも効果あり
30.
スキャンの変化 SQL ノード 該当するパーティションの データノードだけが 応答すれば良い データノード TC データノード データノード
31.
レプリケーションによる スケールアウト アプリケーション 更新 マスター SQL ノード データ ノード データ ノード SQL ノード JOIN スレーブ SQL ノード データ ノード データ ノード INNODB スレーブ INNODB スレーブ INNODB
32.
MySQL Cluster の レプリケーションアーキテクチャ 通常の 通常の SQL 通常の SQL ノード SQL ノード ノード SQL
による更新 SQL ノード (バイナリログ生成) binlog injector thread バイナリログ スレーブへ 更新内容を抽出 データノード群
33.
速いディスク ● インメモリデータベースだけれども・・・ – データの永続性のためにたくさんの I/O が発生する ● ● ● 更新をすべて記録する
GCP ( REDO ログ) LCP (定期的にメモリのイメージをディスクへ書き出す処 理)の速度も重要 ディスク型テーブル – ディスクの性能に大きく影響を受ける
34.
sysbench のサンプル 3500 3000 2500 memory ro memory rw 2000 hdd ro hdd rw 1500 fio ro fio rw 1000 500 0 1 4 8 12 16 32 48 64 96 128 1 server
machine 1 cpu sockets 6 cores 12 threads 32GB memory internal hdd / fusion-io sysbench w/o range tests
35.
マシンをお借りしました マシン ありがとう ございます!!
36.
BLOB は苦手 ● 内部的に BLOB
用のテーブルが作成される – ● JOIN が増えるのと同じ なるべく使わない – varchar で頑張る(最大サイズをきっちり決める) ● – 最大行サイズ 14000 バイト InnoDB と連携
37.
NoSQL インターフェイス ● SQL よりも数段速い!! – – – – ● ● NDB
API … C++ によるネイティブな API ClusterJ … Java バインディング memcached … ストレージエンジンとして実装 MySQL NoSQL Connector for JavaScript … Javascript バ インディング NDB API が最速 手軽に使うなら便利なバインディングがオススメ!
38.
memcached SQL ノード SQL ノード memcached memcached N D B A P I データノード群
39.
まとめ ● MySQL Cluster はこんなときにオススメ! – – – ● 更新をスケールしたい HA
機能が欲しい 超絶高速な JOIN が欲しい 性能の特性の違いに注意! – – – 得意、不得意がある 適切なスケールアウト戦略を選ぶべし! 豊富な NoSQL API
40.
Q&A!! ご静聴ありがとうございました。