20180220 MySQL Trend Seminar 2018 @福岡
# MySQL Trend Seminar 2018 @福岡
https://sosl.connpass.com/event/76429/
主催 : 株式会社スマートスタイル
## MySQL 8.0 新機能
(リリース候補版)
OLTB(分析とか)は、元々あまり得意ではなかったが、
改善されて、どんどん良くなった。
### GIS(空間図形情報)サポートの強化
Boost.Giometryライブラリを統合。
地理情報系
st_distance() で距離を計算できる。
### デフォルトのキャラがユニコード
UTF-8
今まではラテン1。日本人ユーザに優しくない。
### データ型
JSONデータ型
(5.7で実装済み。パフォーマンスを改善。)
特定の要素だけを更新できるようになった。
☆
JSONデータを、SQLのように取得できる。
## 共通テーブル式
WITH句追加
パフォーマンスが良くなる事もある。(複数呼ぶ場合とか)
Window関数
LAG関数
1行前の値を参照できる
LEAD関数
1行後の値を参照できる
### SELECT FOR UPDATEの拡張
NOWAIT
行が既にロックされていれば、すぐにエラーを返す
SKIP LOCKED
行が既にロックされていれば、その行に対するロック取得はあきらめる
### 不可視インデックス(Invisible Indexes)
オプティマイザから見えない索引
一時的に索引を見えない状態にする。
(一時的にインデックスを削除した状態と同じになる。インデックスの削除を安全に行える)
### オプティマイザヒントの拡張
joinの順番を変更できる
### 降順索引
### ヒストグラム
データが偏っている場合のクエリの精度向上。
インデックスよりもお手軽。
### セキュリティ
ロール概念の追加
### 何で 5からいきなり 8?
6は頓挫した。7は姉妹品がナンバリングして、混同を避けるために、もう1つ上げた。
MySQL Enterprise Monitor
## MySQL InnoDB Cluster
### Group Replication
マルチマスターレプリケーション
・全てのノードに書き込み可能
・単一障害が無い
高可用性
・同じデータを全てのノードで保持する
・障害を検知すると、自動でフェイオーバーを行う
MySQLサーバ3台以上で構成
・最大9台まで
・奇数台を推奨
「全てのノード」
「同じ順番に」
トランザクションが実行される
### MySQL Router
### MySQL Shell
MySQLを操作するためのコマンドラインツール
・Python
・Javascript
・
Client→LB(ロードバランサ)→
スレーブの
### モニタリング
Group Replication
MySQL Enterprise Monitor
AUTO INCREMENTの値は「7」ずつ上がる(デフォルト)
バッティングを避けるため
テーブルロックは非推奨
可用性とパフォーマンスはトレードオフ
## MySQLからアプリケーション基盤まで、最適なクラウドへの移行
オンプレ⇔クラウド
を、同じ感覚でできる
エンプラ環境に、クラウドの環境を持ち込む。
データはユーザのデータセンターにて管理する。
( at Customer )
Build → Zip → Deploy
ロードバランサが自動で動く
スケーリング
##### LINE Boost
無料枠あり。30日。$300
## pixivでの MySQLの運用について
pixiv の MySQL率 12/14
Master 15、Slave 28
MySQL Sandbox
1つのサーバで複数の MySQLを簡単に起動できる
複数の異なるバージョンを起動できる
alter table
INT to BIGINT
6日間かかった。
シンプルな Master-Slave構成。
3000万ユーザの運用にも耐えられる。