20年前のMySQL、今のMySQL
- 20年前、PHPは4.0だったそうですが、MySQLはなんと3.23が正式リリースされる前です!! (3.23のProductionリリースは2001年1月です)
- その時代(バージョン3.23)のMySQLからある機能、新しく加わった(バージョン8.0)機能を紹介します
- MySQL 8.0ではたくさんのSQLが追加されました。存在を知らなければ、どんなに良い機能でも使いようがありません。MySQLの最新情報なんてキャッチアップしてる時間ないよ! な忙しいPHPerさんにオススメです
レプリケーション
SQL
window
with句
postgresやoracleでできている
SQLだけでできることの拡充
set persistとかでかける
自己紹介
DBA
MySQLの歴史
MySQL public licenceというシェエアウェアっぽいライセンスだった
2000年にGPLv2に
2003年 libmysqlclient.so
クライアントライブラリがLGPL
リンクしたらcopyleftうけなかった
GPLv2にさしかわった。PHPはライセンス違うので互換性がなかったのではじき出された
2004年にFOSS例外規定を設けた
PHPコミュニティとちょっともめたらしい
MySQLもPHPも6は死んだ
2-3年に一回
組み込み用mysqld
MySQL 8.0サポート終了
ライセンスいいとこしめてたらしい
fileがMyISAMだった、みたいなツイート
どうして?
直接MySQLの機能を埋め込むライブラリ
売り上げ上げたようだ
SQLite3にシェアを奪われた?スマホでもMySQL server動くし
MySQLバイナリサイズを小さくしようとしていた理由の一つだったとおもう
なくなったので、最近はサイズ大きくなってきた
ここ5年以上やっていること
軽量・高速・バカという特徴
ほとんどメンテされてないし、バグってても放置される
最近大事にされなくなったやつ
CREATE TABLE .. Engine = ?
性能特選変えられる
RDBMSっぽい InnoDB
日本語全文検索 Mroonga
DWH用のカラムナー InfiniDB
MariaDBに吸収された
うんちゃかストレージエンジンが流行った
8.0でインタフェース
どうして?
疎結合なためにできなかった最適化があった
ほとんどの人はInnoDBつかってるのに
みんなElasticSearchとか使ってるし?
20年前ならデータストアは1つにまとめる力学があった
いまは用途に分けてるのが常識的になってる
じゃあInnoDBよくしてったほうがいいよね
周辺ツールの内製(?)
殆ど死んだ
生きそうなやつ
InnoDB Clusterとかやってる
商用にプラグインある
MySQL RouterはMySQL Serverの中に入った
mysqlコマンドラインを置き換えたいらしい
商標上
「MySQL XXX」はOracle公式
「XXX for MySQL」はサードパーティー
日本語対応
utf8mb4
ははぱぱ問題
collation気をつけて
辞書順サポート
「ー」のいちがちゃんと違う。JIS X 4061に準拠
レプリケーションを大事にしている
少なくとも2001年からあった(これより前のリリースノートはないから確認できない)
最近の機能
MySQL8.0 JSONデータ型の部分更新をサポート
大きな機能が入る5.1まで手つかずだったが、Oracleが紹介する顧客が採用した(FB, Twitterとか)
彼らの欲しい機能が実装される
16GB 4G x 4代
EC2つかうとそうはならない
自前でDC運用してるところはほしい
メンテナンスリリースでの新機能
「メンテナンスリリースがリリースされました」
dockerでたちあげてfixtureつっこんでテスト流すのを書いたほうがいい
今後強化される機能
SQLinntafe-sudacededecirucinou
myconfに書き込んじゃうような
SQLだけで
リードオンリーの設定でもSQLだけ設定がいじれる
mysqldうかせてmysqlシェルで設定できる
3346だけあけとけばプロ二女ニングできる
RDBMSっぽい機能を使えるようになった
CHECK成約、インデックス
最新の1個だけとるとか
歯抜けのデータとかやるの
ここに来てどかどか追加されてきた
EXCEPT, INTERCECTとかもじっそうされるのではないだろうか?