かきスタンプ

福岡でフリーランスの物流系のエンジニアやってます。

MySQL Trend Seminar 2018 @福岡:ダイジェスト

MySQL Trend Seminar 2018 @福岡』での話のダイジェスト。 sosl.connpass.com

MySQL 8.0 について

MySQLは、分析とかは元々あまり得意ではなかったが、改善されて、どんどん良くなった。
 

GIS(空間図形情報)サポートの強化

Boost.Giometryライブラリを統合。
地理情報系。
st_distance() で距離を計算できる。
 

デフォルトのキャラがユニコード

今まではラテン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つ上げた。