読者です 読者をやめる 読者になる 読者になる

ryouma-nagareのブログ

IT関連の勉強会や、イベントのメモなどを書いていきます。

MySQL 最新情報セミナー2015秋に行ってきました

イベントページはこちら

MySQL5.7はαのころからインストールして色々確認していたので、そのおさらいに。

【State of the Dolphin】

  • MySQLは20周年
  • InnoDBから10年
  • Oracleが管理するようになって5年
  • OracleOpenstackではコアサービスにMySQL Clusterを使用

  • 5.6の3倍速い、というのは”PKベース”の検索

    • 読み取り&書き込みだと1.5倍高速
  • JSON EXPLAINが見やすくなりました
    • コスト情報を追加
  • DBTー3のQ8は、5.6で25秒→5.7で3秒
  • クエリリライトプラグインが入りました。アプリの改修ができない場合にご使用ください
  • ネイティブJSON型はTEXT型の10倍速い
    • JSONの一部にインデックス作成が可能
  • SYSスキーマがデフォルトで入るようになりました
  • GISデータにR-treeインデックスを作成できる
    • InnoDBで地図データにインデックス作成可能。今まではMyISAMでしかインデックスを作成できなかった
  • InnoDBの透過圧縮はカーネルが対応している必要がある
  • ProxyUserサポートを拡張することで、ロールっぽく使えるようになった
  • ヒント句でタイムアウトの指定が可能になった。
    • SELECTだけです
  • 新しいツールmysqlpump
    • マルチスレッドで動きます
  • MySQL Router
    • Fabricの導入時にアプリの変更がいらなくなりました
  • MySQL on Windows
  • 公式リポジトリでDockerイメージ提供
  • MySQL Communitiy ServerはGithubでソース公開を始めました

MySQL Enterprise Edition新機能】

EnterpriseEditionの話は興味が無いので、資料に目は通すが聞き流し。

MySQL 5.7 レプリケーション最新機能とロードマップ】

  • BINログのデフォルトがROWになった
  • GTID、フェイルオーバー時にスレーブが認識するマスタの設定変更がオンラインでできるようになった
  • マスタ側で競合しないトランザクションと判断された場合は、スレーブ側での反映時にパラレル実行される
    • 5.6までは別DBの場合のみだったが、5.7では同一DBでも可能
  • 準同期レプリケーションの高速化
  • Loss-less型の準同期レプリケーションを導入
    • スレーブのACKを待ってからコミットすることで、クリティカルなタイミングでマスタがダウンしてもスレーブから読み取れる
    • 5.7ではこれがデフォルト
    • スレーブが複数の場合、それぞれのACKを待つ
  • GTIDをテーブルに格納することで、バイナリログ無効時にも圧縮できるようにした
  • マルチソース(マスタ)レプリケーションが可能になった
    • 標準バイナリでは256までマスタ設定可能
  • MySQL Fabric1.6ではコントローラをクラスタ化します
  • Labsではグループレプリケーションを開発中

リリースしたばかりなので、今のところ、次のバージョンのロードマップはないよ!との言葉w

きちんと動けば、グループレプリケーションは非常によさげだなと思った。

MySQL 5.7 JSONサポート】

  • 文字セットはutf8mb4
    • collationはutf8mb4_binなので、大文字小文字は区別されます
  • 3000番台のエラーは5.7で追加された
  • デフォルト値は持てない

  • STOREDだとPKにもできる!

  • JSON_EXTRACTは複数のキーを指定可能
    • アローは一つしか指定できない
  • JSON_SEARCHで値からパスがわかる

  • JSON型の最大サイズはmax_allowed_packetに依存

    • show variablesで確認

週明けに自分の環境で

  • generated column→json_extractした値でIndex生成した際の実行計画
  • JSONの部分アップデートと、カラムを全てUPDATEしたときのValidationの状況を確認。
    • αのころは、Insert時しかJSONカラムのValidateをしていなかった気が…

MySQL 5.7 新旧パラメタ比較】

やっぱり、みんなから5.7のパラメータは怖いと突っ込まれるらしいw

  • 暗号化すると長くなるので、innodb_large_prefixを1にしといた方がいいですね
  • log_timestampsのデフォルトがUTCなので罠
  • default_password_lifetimeは0にしてくださいw

全般的に資料が非常にいい出来でした。