MySQL ClusterMySQL Cluster
新機能解説新機能解説
7.5 and beyond7.5 and beyond
奥野 幹也
Twitter: @nippondanji
mikiya (dot) okuno (at) gmail (dot) com
@DBTS-Tokyo 2017
免責事項
本プレゼンテーションにおいて示されている見解
は、私自身の見解であって、オラクル・コーポ
レーションの見解を必ずしも反映したものではあ
りません。ご了承ください。
自己紹介
●
MySQL サポートエンジニア
– 日々のしごと
● トラブルシューティング全般
●
Q&A 回答
● パフォーマンスチューニング
など
● ライフワーク
– 自由なソフトウェアの普及
– 趣味はリカンベントに乗ること
● 最近は執筆と子育ての日々・・・
●
ブログ
– 漢のコンピュータ道
– http://nippondanji.blogspot.com/
MySQL Cluster の
ネーミングについて
MySQL “NDB” Cluster
● マニュアル上での表記が変更
– MySQL Cluster MySQL→ NDB Cluster
– https://dev.mysql.com/doc/refman/en/mysql-cluster.html
●
MySQL InnoDB Cluster との明確化
● 製品名としての変更は(今のところ)ナシ
– MySQL Cluster Carrier Grade Edition
– https://www.mysql.com/products/cluster/
– ややこしや〜
本セッションでは
MySQL NDB Cluster に統一
MySQL NDB Cluster
7.5 新機能概要
MySQL NDB Cluster 7.5
新機能概要
●
MySQL 5.7 との統合
●
インデックス統計情報の改良
●
ndbinfo の拡充
●
バックアップレプリカからの参照
● 全データノードへのレプリカ
● テーブルの容量制限改善
●
ndb_restore コマンドの SQL 出力
2016 年 10 月リリース
MySQL 5.7
との統合
MySQL 5.7 との統合
●
MySQL サーバーの最新版
– 2015 年 10 月リリース
– 175 を超える新機能搭載
●
SQL ノード= NDB ストレージエンジンつき MySQL サー
バー
– ストレージエンジンを変更するだけで同じ SQL でアクセス
可能
– MySQL NDB Cluster でもメリットの享受が可能
●
MySQL NDB Cluster 7.5 MySQL 5.7→
●
MySQL NDB Cluster 7.3, 7.4 MySQL 5.6→
●
MySQL NDB Cluster 7.2 MySQL 5.5→
MySQL 5.7 の機能
● レプリケーション関連
●
InnoDB 関連
● オプティマイザー関連
● セキュリティ関連
● パフォーマンススキーマ関連
●
GIS 関連
●
JSON 関連
●
etc etc...
詳解 MySQL 5.7
止まらぬ進化に乗り遅れないためのテクニカルガイド
●
MySQL 5.7 の新機能を網羅的に解説
– 175 の新機能
– WorkLog/Bug Id つき
– コンセプト、仕組み、使い方
● 新機能の理解に必要な前提知識
– 古いバージョンでも適用可能
– アーキテクチャを理解することで
本物の理解を
MySQL 5.7 との
統合による具体的な
改善点
Records-per-key 最適化
●
オプティマイザが JOIN のときに参照する情報
●
外部表の 1 行に対して、内部表から平均何行がマッチする
か
– ストレージエンジンが値を返す
– MySQL 5.7 においてデータ型が INT から FLOAT に変更
●
より正確な JOIN のコスト見積が可能に
●
MySQL NDB Cluster 7.5 も FLOAT に対応
その他のオプティマイザ関連の
新機能
●
EXPLAIN FOR CONNECTION
●
新しいコストモデル
● オプティマイザヒント
●
ディスクベースのテンポラリテーブルを InnoDB 化
●
UNION ALL がテンポラリテーブル不要に
●
コストに WHERE 句による絞り込みを考慮
●
GROUP BY の動作を SQL 標準準拠に
●
FROM 句のサブクエリでテンポラリテーブルが不要な場合
作成しないように
etc etc
パフォーマンススキーマと
sys スキーマ
● パフォーマンス・スキーマ
– 種々の統計情報を取得
– 主にパフォーマンス解析に利用
– 情報の種類が多すぎて使いこなすのが難しいのが難点
– バージョンが上がるごとに情報の種類が増加
●
sys スキーマ
– パフォーマンス・スキーマと情報スキーマを横断的にアク
セスするビューのコレクション
– パフォーマンス・スキーマよりも直感的に利用可能
– MySQL 5.7 で追加
● 元々は独立したプロジェクトだった
●
MySQL 5.6 用もあり
MySQL NDB Cluster とは
無関係の MySQL 5.7 の変更点
●
InnoDB 全般
– SQL ノード上で併用する場合は利点あり
– ディスク上のテンポラリテーブルが InnoDB になった点は
メリットあり
● レプリケーションのサポートされていない機能
– GTID
– 準同期レプリケーション
– マルチスレッドスレーブ
– マルチソースレプリケーション
●
MySQL NDB Cluster には無い機能
– 空間インデックス
– フルテキストインデックス
ndbinfo の拡充
ndbinfo とは
●
MySQL NDB Cluster 用の情報取得ツール
●
ndbinfo スキーマに各種テーブルがある
●
データノードからメタデータや統計情報を取得
MySQL NDB Cluster 7.5
における改良点
●
config_params… パラメーターの説明やデフォルト値、
データ型などが追加
●
config_values… 現在のパラメーターの設定値を格納。
●
dict_obj_info... 各種データベースオブジェクトの情報。
●
table_distribution_status... テーブルの LCP 状況等
●
table_fragments... テーブルごとのフラグメントの状態
●
table_info... テーブルの各種情報
●
table_replicas... レプリカの状態
バックアップレプリカ
からの参照
Read from backup replica
●
これまではプライマリーレプリカのみ R/W 可能
●
プライマリーレプリカを各データノードに分散させることで、
負荷も分散
●
MySQL NDB Cluster 7.5 より、バックアップレプリカからの
参照が可能に
– ただしデフォルトではこれまで通りプライマリーのみにアク
セス可能
– テーブル作成時に指定した場合のみ
レプリカの動き
Data node 1 Data node 2
Primary
Secondary Primary
Secondary
データ同期
データ同期
Read from backup replica
を使わない場合
Data node 1 Data node 2
Primary
Secondary Primary
Secondary
Client
R/W
R/W
Read from backup replica
を使った場合
Data node 1 Data node 2
Primary
Secondary Primary
Secondary
Client
R/W
R/W
R
R
全データノードへの
レプリカ
通常のテーブルの場合
ノードグループ 1 ノードグループ 2
Data node 1
Data node 2
Data node 3
Data node 4
F1
primary
F3
backup
F1
backup
F3
primary
F2
backup
F4
primary
F2
primary
F4
backup
Fully replicated table
(全体複製テーブル)
ノードグループ 1 ノードグループ 2
Data node 1
Data node 2
Data node 3
Data node 4
F1,F2,
F3,F4
F1,F2,
F3,F4
F1,F2,
F3,F4
F1,F2,
F3,F4
テーブルサイズの
制限の改善
テーブルサイズの制限
●
MySQL NDB Cluster 7.4 まで
– FIXED フォーマット部分はフラグメントあたり 16GB まで
– フラグメント数はデータノード数と同じ
●
MySQL NDB Cluster 7.5
– FIXED フォーマット部分のデータサイズは 128TB まで
– ただしデータノードごとの DataMemory の上限が 1TB
●
データノードは 48 ノードなので、実質的な上限は 48TB
●
レプリカ数2なら 24TB
ndb_restore
コマンドの SQL 出力
ndb_restore コマンドの
SQL 出力
●
ndb_restore は、ネイティブバックアップをリストアするツー
ル
– データノードへクライアントとして接続してリストア
– バックアップはメタデータ、データ、ログから構成される
– データ部分を CSV で、ログをテキストで出力する機能が
あった
●
MySQL NDB Cluster 7.5 において、ログの出力が SQL 対
応
– InnoDB など、他のストレージエンジンへのデータ移行に
– InnoDB へのレプリケーションのセットアップ
MySQL Cluster
7.6DMR の紹介
MySQL Cluster 7.6 DRM 登場
●
MySQL Cluster 7.6 Development Milestone
Release とは?
– Release Candidate になる前のバージョン
– 機能の追加・削除が予告なく変更される場合有り
● 準備が整った機能から順番に統合される
– キャンセルされる場合もあり
●
MySQL Cluster 7.6.3 dmr
– 2017 年 7 月 5 日リリース
● 正式版ではありません!
– https://lists.mysql.com/announce/1185
MySQL NDB Cluster 7.6 の
(予定された)新機能概要
● ディスク型テーブルの新フォーマット
● メモリ割り当て設定の改善
●
ndbinfo の拡充
●
CSV データのインポートツール
● 新しいモニタリングツール
●
LCP のスループット安定化
●
SPJ の改良
●
システム名の指定
ディスク型テーブルの
新フォーマット
ディスク型テーブルの
新フォーマット
● ページチェックサムの追加
●
CREATE TABLE SCHEMA VERSION ID の導入
– DROP/CREATE により、 Table ID が再利用されてしまう
– 同じ Table ID を持ったエクステントが CREATE 後のテー
ブルのものだと誤って判定されてしまう
● イニシャルローリングリスタートにより新しいフォーマットへ変
更
– 古いフォーマットを持つバージョンにはダウングレードでき
ない
メモリ割り当て
設定の改善
IndexMemory の廃止
●
DataMemory から動的に割り当て
– 必要な分だけが割り当てられるように
– 無駄がない
– 設定がちょっとだけシンプルに
●
DataMemory だけサイジングすれば OK
DataMemory から
SharedGlobalMemory へ
● メモリ割り当て先の変更
●
DataMemory
– データの格納に関する部分に特化
●
SharedGlobalMemory
– トランザクション処理に関するメモリはこちらから割り当て
– 以前より多く必要になるかも
●
変更されたものの例
– レプリケーション用イベントバッファ
– ファイルの初期化処理用バッファ
– オフラインのインデックス作成用バッファ
etc
storage/ndb/src/kernel/blocks/record_types.hpp
ndbinfo の拡充
ndbinfo に2つのテーブルが追加
●
config_nodes
– config.ini 内で定義されたノードの一覧
●
processes
– 現在接続中のプロセス(ノード)一覧
ndb_mgm -e SHOW
の代わりに使うと便利
CSV データの
インポートツール
ndb_import
ndb_import
●
LOAD DATA INFILE のように CSV データをテーブルに取
り込むツール
●
データノードへ直接接続
– 高速!
– API ノードのひとつとして動作
– データノードへの接続数、接続あたりのスレッド数を指定
可能
ndb_import -c connectstring db_name table_name.csv
モニタリングツール
ndb_top
ndb_top
●
SQL ノードの ndbinfo からデータノードの負荷を監視
●
スレッドごとに負荷を計測
shell> ndb_top --user=root --passwd -n 2
LCP のスループット
安定化
LCP とは
●
Local checkpoint の略
●
データノードは定期的に DataMemory 上のデータを、ファ
イルへ書き出している
– 全体を順次スキャン
– 2 世代分のデータがファイルに保存
– かなりの I/O が発生する
●
GCP ( Global checkpoint )とセットでデータを復元
– GCP = Redo logging
LCP のスループット安定化
●
LCP は I/O が遅いと自動的にスループットを調整する機能
がある
●
7.5 までのバージョンでは、 LDM スレッドごとに I/O 遅延を
モニタリングし、スループットを調整していた
– 他の LDM スレッドはスループットを調整しないかも知れ
ない
– LDM = Local Data Manager
●
7.6 では I/O 遅延のモニタリングをデータノード全体で統一
して行うようになった
– より正確にサーバー全体の I/O の状況を反映するように
なった。
SPJ の改良
SPJ とは
●
Select-Project-Join の略
– 別名 Pushdown Join
●
データノード上で JOIN を実行し、結果を SQL ノードへ返す
– 非常に高速!
– データノード・ SQL ノード間のラウンドトリップを省略
– 複数のデータノード上で JOIN を並列実行
Pushdown Join が効率化
●
DBSPJ カーネルブロックのシグナル周りの改良
– 余分なシグナルが送信されないように
– シグナルフォーマットをコンパクトに
●
ロードバランスの改善
– LDM スレッド数が、 TC スレッド数で割り切れない場
合、 DBSPJ の負荷に偏りが生じていた
– その場合、 DBSPJ ブロックをラウンドロビンで使うようにす
ることで、スレッドごとの負荷を平坦化
システム名の
指定が可能に
システム名とは
● クラスタを識別するためのタグのようなもの
● config.ini 内で指定
[System]
Name = system_name
●
SHOW GLOBAL STATUS LIKE ‘Ndb_system_name’ で
参照
まとめ
MySQL “NDB” Cluster は
着々と進化中!!
●
MySQL NDB Cluster 7.5 、 7.6DMR で着実な進化
– 派手な変更は無いが、役立つ新機能が多数
●
機能面
– MySQL 5.7 との統合により充実
– ndb_top 、 ndb_import などの新しいツール
●
性能面
– オプティマイザの改善により、 SQL 実行が高速化
– LCP スループットの安定
– バックアップレプリカらからの参照
– DBSPJ の改良
● 運用面
– ndbinfo による監視の充実
– システム名による識別
宣伝:書籍が出ます!
Pro MySQL NDB Cluster
●
Pro MySQL NDB Cluster / Apress Media
– MySQL NDB Cluster 7.5 の解説書
– 同僚の Jesper との共著
– 英語です。
– お値段は $49.99
Q&Aご静聴ありがとうございました。
宣伝:サポートエンジニア募集中!!
●
MySQL サポートチームで一緒に働いてみませんか?!
●
技術力が物を言うポジションです!
– 技術力に自信のある方、技術を磨きたい方歓迎
– L1 から L3 までの問い合わせをすべて受け持ち
● クエリのチューニングなども行います
● オープンソースなのでソースコード見放題!!
– 英語より技術力重視
● 普段の業務は日本語オンリーです。
● 日本の顧客がターゲットです。
● 上司は海外
– やりとりは英語のみ
– TOEIC 700 程度が目安
●
在宅勤務可能

MySQL Cluster 新機能解説 7.5 and beyond

  • 1.
    MySQL ClusterMySQL Cluster 新機能解説新機能解説 7.5and beyond7.5 and beyond 奥野 幹也 Twitter: @nippondanji mikiya (dot) okuno (at) gmail (dot) com @DBTS-Tokyo 2017
  • 2.
  • 3.
    自己紹介 ● MySQL サポートエンジニア – 日々のしごと ●トラブルシューティング全般 ● Q&A 回答 ● パフォーマンスチューニング など ● ライフワーク – 自由なソフトウェアの普及 – 趣味はリカンベントに乗ること ● 最近は執筆と子育ての日々・・・ ● ブログ – 漢のコンピュータ道 – http://nippondanji.blogspot.com/
  • 4.
  • 5.
    MySQL “NDB” Cluster ●マニュアル上での表記が変更 – MySQL Cluster MySQL→ NDB Cluster – https://dev.mysql.com/doc/refman/en/mysql-cluster.html ● MySQL InnoDB Cluster との明確化 ● 製品名としての変更は(今のところ)ナシ – MySQL Cluster Carrier Grade Edition – https://www.mysql.com/products/cluster/ – ややこしや〜 本セッションでは MySQL NDB Cluster に統一
  • 6.
    MySQL NDB Cluster 7.5新機能概要
  • 7.
    MySQL NDB Cluster7.5 新機能概要 ● MySQL 5.7 との統合 ● インデックス統計情報の改良 ● ndbinfo の拡充 ● バックアップレプリカからの参照 ● 全データノードへのレプリカ ● テーブルの容量制限改善 ● ndb_restore コマンドの SQL 出力 2016 年 10 月リリース
  • 8.
  • 9.
    MySQL 5.7 との統合 ● MySQLサーバーの最新版 – 2015 年 10 月リリース – 175 を超える新機能搭載 ● SQL ノード= NDB ストレージエンジンつき MySQL サー バー – ストレージエンジンを変更するだけで同じ SQL でアクセス 可能 – MySQL NDB Cluster でもメリットの享受が可能 ● MySQL NDB Cluster 7.5 MySQL 5.7→ ● MySQL NDB Cluster 7.3, 7.4 MySQL 5.6→ ● MySQL NDB Cluster 7.2 MySQL 5.5→
  • 10.
    MySQL 5.7 の機能 ●レプリケーション関連 ● InnoDB 関連 ● オプティマイザー関連 ● セキュリティ関連 ● パフォーマンススキーマ関連 ● GIS 関連 ● JSON 関連 ● etc etc...
  • 11.
    詳解 MySQL 5.7 止まらぬ進化に乗り遅れないためのテクニカルガイド ● MySQL5.7 の新機能を網羅的に解説 – 175 の新機能 – WorkLog/Bug Id つき – コンセプト、仕組み、使い方 ● 新機能の理解に必要な前提知識 – 古いバージョンでも適用可能 – アーキテクチャを理解することで 本物の理解を
  • 12.
  • 13.
    Records-per-key 最適化 ● オプティマイザが JOINのときに参照する情報 ● 外部表の 1 行に対して、内部表から平均何行がマッチする か – ストレージエンジンが値を返す – MySQL 5.7 においてデータ型が INT から FLOAT に変更 ● より正確な JOIN のコスト見積が可能に ● MySQL NDB Cluster 7.5 も FLOAT に対応
  • 14.
    その他のオプティマイザ関連の 新機能 ● EXPLAIN FOR CONNECTION ● 新しいコストモデル ●オプティマイザヒント ● ディスクベースのテンポラリテーブルを InnoDB 化 ● UNION ALL がテンポラリテーブル不要に ● コストに WHERE 句による絞り込みを考慮 ● GROUP BY の動作を SQL 標準準拠に ● FROM 句のサブクエリでテンポラリテーブルが不要な場合 作成しないように etc etc
  • 15.
    パフォーマンススキーマと sys スキーマ ● パフォーマンス・スキーマ –種々の統計情報を取得 – 主にパフォーマンス解析に利用 – 情報の種類が多すぎて使いこなすのが難しいのが難点 – バージョンが上がるごとに情報の種類が増加 ● sys スキーマ – パフォーマンス・スキーマと情報スキーマを横断的にアク セスするビューのコレクション – パフォーマンス・スキーマよりも直感的に利用可能 – MySQL 5.7 で追加 ● 元々は独立したプロジェクトだった ● MySQL 5.6 用もあり
  • 16.
    MySQL NDB Clusterとは 無関係の MySQL 5.7 の変更点 ● InnoDB 全般 – SQL ノード上で併用する場合は利点あり – ディスク上のテンポラリテーブルが InnoDB になった点は メリットあり ● レプリケーションのサポートされていない機能 – GTID – 準同期レプリケーション – マルチスレッドスレーブ – マルチソースレプリケーション ● MySQL NDB Cluster には無い機能 – 空間インデックス – フルテキストインデックス
  • 17.
  • 18.
    ndbinfo とは ● MySQL NDBCluster 用の情報取得ツール ● ndbinfo スキーマに各種テーブルがある ● データノードからメタデータや統計情報を取得
  • 19.
    MySQL NDB Cluster7.5 における改良点 ● config_params… パラメーターの説明やデフォルト値、 データ型などが追加 ● config_values… 現在のパラメーターの設定値を格納。 ● dict_obj_info... 各種データベースオブジェクトの情報。 ● table_distribution_status... テーブルの LCP 状況等 ● table_fragments... テーブルごとのフラグメントの状態 ● table_info... テーブルの各種情報 ● table_replicas... レプリカの状態
  • 20.
  • 21.
    Read from backupreplica ● これまではプライマリーレプリカのみ R/W 可能 ● プライマリーレプリカを各データノードに分散させることで、 負荷も分散 ● MySQL NDB Cluster 7.5 より、バックアップレプリカからの 参照が可能に – ただしデフォルトではこれまで通りプライマリーのみにアク セス可能 – テーブル作成時に指定した場合のみ
  • 22.
    レプリカの動き Data node 1Data node 2 Primary Secondary Primary Secondary データ同期 データ同期
  • 23.
    Read from backupreplica を使わない場合 Data node 1 Data node 2 Primary Secondary Primary Secondary Client R/W R/W
  • 24.
    Read from backupreplica を使った場合 Data node 1 Data node 2 Primary Secondary Primary Secondary Client R/W R/W R R
  • 25.
  • 26.
    通常のテーブルの場合 ノードグループ 1 ノードグループ2 Data node 1 Data node 2 Data node 3 Data node 4 F1 primary F3 backup F1 backup F3 primary F2 backup F4 primary F2 primary F4 backup
  • 27.
    Fully replicated table (全体複製テーブル) ノードグループ1 ノードグループ 2 Data node 1 Data node 2 Data node 3 Data node 4 F1,F2, F3,F4 F1,F2, F3,F4 F1,F2, F3,F4 F1,F2, F3,F4
  • 28.
  • 29.
    テーブルサイズの制限 ● MySQL NDB Cluster7.4 まで – FIXED フォーマット部分はフラグメントあたり 16GB まで – フラグメント数はデータノード数と同じ ● MySQL NDB Cluster 7.5 – FIXED フォーマット部分のデータサイズは 128TB まで – ただしデータノードごとの DataMemory の上限が 1TB ● データノードは 48 ノードなので、実質的な上限は 48TB ● レプリカ数2なら 24TB
  • 30.
  • 31.
    ndb_restore コマンドの SQL 出力 ● ndb_restoreは、ネイティブバックアップをリストアするツー ル – データノードへクライアントとして接続してリストア – バックアップはメタデータ、データ、ログから構成される – データ部分を CSV で、ログをテキストで出力する機能が あった ● MySQL NDB Cluster 7.5 において、ログの出力が SQL 対 応 – InnoDB など、他のストレージエンジンへのデータ移行に – InnoDB へのレプリケーションのセットアップ
  • 32.
  • 33.
    MySQL Cluster 7.6DRM 登場 ● MySQL Cluster 7.6 Development Milestone Release とは? – Release Candidate になる前のバージョン – 機能の追加・削除が予告なく変更される場合有り ● 準備が整った機能から順番に統合される – キャンセルされる場合もあり ● MySQL Cluster 7.6.3 dmr – 2017 年 7 月 5 日リリース ● 正式版ではありません! – https://lists.mysql.com/announce/1185
  • 34.
    MySQL NDB Cluster7.6 の (予定された)新機能概要 ● ディスク型テーブルの新フォーマット ● メモリ割り当て設定の改善 ● ndbinfo の拡充 ● CSV データのインポートツール ● 新しいモニタリングツール ● LCP のスループット安定化 ● SPJ の改良 ● システム名の指定
  • 35.
  • 36.
    ディスク型テーブルの 新フォーマット ● ページチェックサムの追加 ● CREATE TABLESCHEMA VERSION ID の導入 – DROP/CREATE により、 Table ID が再利用されてしまう – 同じ Table ID を持ったエクステントが CREATE 後のテー ブルのものだと誤って判定されてしまう ● イニシャルローリングリスタートにより新しいフォーマットへ変 更 – 古いフォーマットを持つバージョンにはダウングレードでき ない
  • 37.
  • 38.
    IndexMemory の廃止 ● DataMemory から動的に割り当て –必要な分だけが割り当てられるように – 無駄がない – 設定がちょっとだけシンプルに ● DataMemory だけサイジングすれば OK
  • 39.
    DataMemory から SharedGlobalMemory へ ●メモリ割り当て先の変更 ● DataMemory – データの格納に関する部分に特化 ● SharedGlobalMemory – トランザクション処理に関するメモリはこちらから割り当て – 以前より多く必要になるかも ● 変更されたものの例 – レプリケーション用イベントバッファ – ファイルの初期化処理用バッファ – オフラインのインデックス作成用バッファ etc storage/ndb/src/kernel/blocks/record_types.hpp
  • 40.
  • 41.
    ndbinfo に2つのテーブルが追加 ● config_nodes – config.ini内で定義されたノードの一覧 ● processes – 現在接続中のプロセス(ノード)一覧 ndb_mgm -e SHOW の代わりに使うと便利
  • 42.
  • 43.
    ndb_import ● LOAD DATA INFILEのように CSV データをテーブルに取 り込むツール ● データノードへ直接接続 – 高速! – API ノードのひとつとして動作 – データノードへの接続数、接続あたりのスレッド数を指定 可能 ndb_import -c connectstring db_name table_name.csv
  • 44.
  • 45.
    ndb_top ● SQL ノードの ndbinfoからデータノードの負荷を監視 ● スレッドごとに負荷を計測 shell> ndb_top --user=root --passwd -n 2
  • 46.
  • 47.
    LCP とは ● Local checkpointの略 ● データノードは定期的に DataMemory 上のデータを、ファ イルへ書き出している – 全体を順次スキャン – 2 世代分のデータがファイルに保存 – かなりの I/O が発生する ● GCP ( Global checkpoint )とセットでデータを復元 – GCP = Redo logging
  • 48.
    LCP のスループット安定化 ● LCP はI/O が遅いと自動的にスループットを調整する機能 がある ● 7.5 までのバージョンでは、 LDM スレッドごとに I/O 遅延を モニタリングし、スループットを調整していた – 他の LDM スレッドはスループットを調整しないかも知れ ない – LDM = Local Data Manager ● 7.6 では I/O 遅延のモニタリングをデータノード全体で統一 して行うようになった – より正確にサーバー全体の I/O の状況を反映するように なった。
  • 49.
  • 50.
    SPJ とは ● Select-Project-Join の略 –別名 Pushdown Join ● データノード上で JOIN を実行し、結果を SQL ノードへ返す – 非常に高速! – データノード・ SQL ノード間のラウンドトリップを省略 – 複数のデータノード上で JOIN を並列実行
  • 51.
    Pushdown Join が効率化 ● DBSPJカーネルブロックのシグナル周りの改良 – 余分なシグナルが送信されないように – シグナルフォーマットをコンパクトに ● ロードバランスの改善 – LDM スレッド数が、 TC スレッド数で割り切れない場 合、 DBSPJ の負荷に偏りが生じていた – その場合、 DBSPJ ブロックをラウンドロビンで使うようにす ることで、スレッドごとの負荷を平坦化
  • 52.
  • 53.
    システム名とは ● クラスタを識別するためのタグのようなもの ● config.ini内で指定 [System] Name = system_name ● SHOW GLOBAL STATUS LIKE ‘Ndb_system_name’ で 参照
  • 54.
  • 55.
    MySQL “NDB” Clusterは 着々と進化中!! ● MySQL NDB Cluster 7.5 、 7.6DMR で着実な進化 – 派手な変更は無いが、役立つ新機能が多数 ● 機能面 – MySQL 5.7 との統合により充実 – ndb_top 、 ndb_import などの新しいツール ● 性能面 – オプティマイザの改善により、 SQL 実行が高速化 – LCP スループットの安定 – バックアップレプリカらからの参照 – DBSPJ の改良 ● 運用面 – ndbinfo による監視の充実 – システム名による識別
  • 56.
    宣伝:書籍が出ます! Pro MySQL NDBCluster ● Pro MySQL NDB Cluster / Apress Media – MySQL NDB Cluster 7.5 の解説書 – 同僚の Jesper との共著 – 英語です。 – お値段は $49.99
  • 57.
  • 58.
    宣伝:サポートエンジニア募集中!! ● MySQL サポートチームで一緒に働いてみませんか?! ● 技術力が物を言うポジションです! – 技術力に自信のある方、技術を磨きたい方歓迎 –L1 から L3 までの問い合わせをすべて受け持ち ● クエリのチューニングなども行います ● オープンソースなのでソースコード見放題!! – 英語より技術力重視 ● 普段の業務は日本語オンリーです。 ● 日本の顧客がターゲットです。 ● 上司は海外 – やりとりは英語のみ – TOEIC 700 程度が目安 ● 在宅勤務可能