仕事やプライベートで調べたことのメモ書きなど(@札幌)

仕事やプライベートで調べたこと、興味ある事のメモ書きです。2016年4月から札幌で働いてます。※このブログは個人によるもので、団体を代表するものではありません。

「MySQL最新情報セミナー 2017年10月 in 大阪」に参加(2017/10/27@大阪)

今日は大阪に別件で出張にきたため、以下のMySQLセミナーに参加しました!
atnd.org

資料は後ほど公開いただけるとのこと。

State of the Dolphin (Morgan Tockerさん)

MySQL 8.0での新機能などを、サンプルアプリ実装

GIS機能の強化

  • 独自実装を捨てて、Boost.Geometoryを採用することにした。
  • Boost.Geometryはオープンソースで、そのために二人を新たに採用している。
  • GISへの要望は多い。

emoji対応

  • モバイルを考えると絵文字対応は必須
  • デフォルトの文字コードをutf8mb4にした。
  • 日本語、ロシア語などで固有の並べ方にも対応。
  • utf8mb4は可変長の文字コードなので、パフォーマンスが気になるところであるが、むしろ速くなった。

開発生産性の向上

  • バックエンドでもjavascriptを使うケースが増えてきた。共通のライブラリを使える。
  • 投資対象の技術を減らしたい。
  • MySQL shellというのが追加になった。
  • スキーマレスなデータへの対応。jsonデータ型(5.7から追加されており、8.0でいくつかをさらに追加)。JSON_TABLE()関数がMorganさんのお気に入り。JSON_TABLE()関数はテーブル構造の形でデータを取り出せる。

データドリブン

  • まずは最小限の機能で世に出すという前提。
  • 要望が多い機能で、以下をCTE(Common Table Expression, WITH句)、Windows Function追加。
  • WITH句はビューに近いけど、そのSQL実行時にのみ存在するビューというイメージ。
  • 24x7稼働し続ける

High Avialability

  • Group Replication

Hot row

  • SKIP LOCKED:競合を抑えられる。

Invisible Index

  • ゴミ箱のように仮にインデックスをなくしてみる。

監視

  • パフォーマンススキーマ(パフォーマンスメタデータ)
  • パフォーマンススキーマ取得のためのオーバーヘッドが大幅に下がった。
  • 5.7ではSYSスキーマができた。SYSスキーマから遅いSQL10件などの取得も簡単。
  • 統計情報は全部オンにするとパフォーマンスに影響があるため、一分みオンにしてある。

パフォーマンスの改良

  • SQL処理性能改善

性能改善

  • 参照処理の改善
  • 書き込みもどこかで参照処理がはいっている。
  • 書き込みは40のうち10台にした方が速かった。
  • バイナリの暗号化はやっているところ。

What’s new in MySQL 8.0 (梶山さん)

MySQL workbench

www.granfairs.com

  • SQLの整形をしてくれたり
  • 実行計画が見られたリ
  • MariaDBでも使えるっぽい

MySQL 8.0は現在RC

GIS機能拡張

  • Boost.Geometryへ変更
  • SRID(測位系)サポート

UTF-8

  • 最新のUnicode 9.0
  • utf8mb4へ
  • デフォルト照合順序はutf8mb4_0900_ai_ci
  • 国ごとの照合順序を実装 utf8mb4_ja_0900_as_cs_ks

ロール

InnoDB Redo/Undo 暗号化

  • 透過的暗号化
  • Community版でも仕組み的には可能だけど、商用版じゃないと鍵管理がきちんとできない。

Window関数

dev.classmethod.jp

Invisible Index (一時的に隠す)

オプティマイザヒント拡張

パフォーマンス・スキーマヒストグラム(処理のレイテンシを表すテーブルのこと→簡易的な性能動向の仕組み)

パフォーマンススキーマが拡張された

  • INFORMATION_SCHEMA.INNODB_LOCKSなどは非推奨で削除されてしまった

設定変更の永続化

  • SET xxxだと、セッションをきったり、GLOBALでも再起動すると消える。SET PERSIST xxxで永続化できるようになる。
  • my.cnfの書き間違いが少なくなる。
  • どこで誰が設定したかを確認できる。

InnoDB Dedicated Server

デフォルトパラメータがいろいろ変わるよ。

レプリケーション関連

JSONデータの部分更新(レプリケーションなどの対応が必要)

その他多くの点を修正

MySQL InnoDB Cluster (山崎さん)

高可用性構成をMySQL製品だけでカバーする。レプリケーションでデータベースのレイヤーしかカバーしていなかったが、アプリケーションからの接続の切り替えもカバー。

  • 統合製品(Group Replication + MySQL Router + MySQL Shell → 高可用性製品をまとめたものに名前をつけている。別々にダウンロードする必要がある)
  • 使いやすさ(MySQLシェル)
  • 柔軟性
  • 参照/書き込みのスケールアウト(シャーディング)

本番での事例もチラホラ(すごいたくさんというほどではないが)

後半のデモは超速だった!

MySQL Enterprise Editionの紹介 (山崎さん)

MySQL :: MySQL Editions

Enterprise Monitor

Oracle Enterprise Managerからも監視できる

バックアップが速い

  • コミュニティ版ではmysqldumpだけどEnterprise Backupは速い

Workbenchも商用版があるよ♪

  • ER図作成とか便利そう

包括的なセキュリティ対策ツール

サーバーやSQL単位でのチューニングもサポートする

以上。ありがとうございました。