[レポート]MySQL 5.7 RC登場!MySQL最新開発ロードマップ in OSC2015 Hokkaido #osc15do

2015.06.13

こんにちは、せーのです。今日は昨日、今日と2日間にわたって行われている「Open Source Confference」の北海道版、「OSC Hokkaido 2015」よりMySQL5.7に関する最新情報を速報としてレポート致します。スピーカーはOracleの梶山 隆輔氏。

kajiyama

レポート

2015年はMySqlに関して大事な数字が並ぶ年

  • Sun MicrosoftがOracleに買収されて5
  • MySqlのストレージエンジン機能のデフォルトInnoDB(InnoBase)がOracleに買収されて10
  • [日本MySQLユーザー会]が出来て15
  • MySQLが世に出てから20

枯れた印象もあるが新しいこともやっている

  • MySQL Cluster 7.4GA
  • データベースの中にFirewallを持つMySQL Enterprise Firewall
  • MySQL 5.7。5.6より2倍速い、と言われる。
  • GitHubへのMySQLソースコードの掲載
  • 開発チームにプルリクが可能
  • 今月初旬、MySQL 5.6 リファレンスマニュアル日本語版配布開始

MySQL商用版

  • システムが大きくなってきた場合に必要なモジュールが含まれたバージョン
  • オンラインバックアップ(Enterprise Backup)
  • 外部認証との統合(ENterprise Security)
  • Enterprise Firewall ホワイトリスト形式で認められるSQL文が決まっている。予期しないSQLインジェクションを弾く。
  • RECORDINGモードで発行されたSQLを全て記録。PROTECTINGモードに変更することでそれ以外のSQLを全てブロックする。
  • コンサルティングサポート(スキーマ構成のレビュー、ベンチマークの結果を見てチューニング)

MySQL Cluster 7.4

  • 共有ディスクを使わないActive-Activeの分散DB。ミッションクリティカル用途。
  • データノードにてデータの二重化をしてデータを守る。
  • データを2台で6分割する。
  • SQLでデータの読み書きができる。C++アプリから直接バックエンドプロセスのAPIを叩ける。memcachedに書いたつもりが直接DBに書き込みが出来る。
  • SQLとNoSQLのトランザクションで同じデータを読み書き出来る
  • 2月末に最新版が出た。機能はそんなに増えず性能向上を頑張った。
  • 秒間2億レコード参照可能
  • 読み書き両方で読み書き250万件/秒可能

MySQLロードマップ

  • 今のMySQLの原型は3.23。2000年ころにリリースされた。
  • 現在のバージョンは5.6が安定版。リリースして2年ほど経つ。

MySQL 5.6

  • レプリケーション機能
  • トランザクションを一意に認識出来るようになった(GTID)。
  • オンラインALTER TABLE
  • Memcached API。NoSQLも使えるようになった。INSERTの8〜9倍速い。

MySQL5.7 RC

  • ベンチマークの結果5.6の2倍、5.5の3倍速くなった

オプティマイザ

  • 新しいコストモデルによりストレージエンジンの処理を改善した
  • JSON形式でEXPLAINが出せる
  • MySQL WorkbenchのVisual Explainで可視化できる

InnoDB一時表

  • 一時表が高速化

クエリリライトプラグイン

  • 悪さしているSQLに対して動的にヒントを追加したりクエリを書き換えたりできる

InnoDB Full Text Search(FTS)

  • 日本語の全文検索機能。N-gram形式/mecab辞書形式

運用サポート

  • Performance Schemaで性能情報を取る機能がだいぶ実用的になった

SYS Schema

  • 細かすぎるPerformance Schemaをわかりやすく表示したもの
  • InnoDB Buffer Pool Online。稼働時にバッファプールを変えられる

GIS

  • 独自コードの置き換え。Boostを使用するように方針変更。
  • 緯度経度で表していた情報をハッシュ化して精度を上げる。ハッシュを短くすると場所がざっくりし、ハッシュを長くすると正確になる。

mysql_install_dbがCコードになり非推奨

  • mysqldのinitializeオプション等で初期化する

レプリケーションの改善

  • Multi-Soure Replication。複数のマスタDBから一台のスレーブDBに集約させる。

マルチスレッドスレーブ

  • 受け取る部分をマルチスレッド化することで集約時でも捌くことが可能に

MySQL Fabric

  • レプリケーション構成でいっぱいになった時にシャーディングさせる。可用性が高い。

MySQL Labs

  • グループレプリケーション - 複数のレプリケーションDBを全てマスタとして、どのDBに書き込んでも同期させる機能。
  • Data Dictionary - メタデータを全て管理させるリポジトリ
  • HTTP Plugin for MySQL - アプリケーションやブラウザからMySQLに通信して結果を得られる事が出来る。URLの中にSQL文を直接書くことができる、SQLインジェクションって何ですか?という機能。他にもJSONフォーマットをURLに入れて送ったり出来る。
  • JSONデータ型 - MySQLがドキュメントデータベースとして使える。型チェック、専用関数を用意。

スケジュール

  • 5.7は年内にリリースできるか

まとめ

いかがでしたでしょうか。数年前から今回の5.7はかなり凄いことになる、という話題が持ちきりです。乗り遅れないようにしっかりキャッチアップしていきましょう!