MySQLリリースノートで(略)勉強会8.0.30を開催しました

MySQL 8.0.30 のリリースノートをみてわいわい言う勉強会を開催しました。

mysql.connpass.com


 ここ数回は18時から開催していたところ、今回19時からの開催にしてみましたが、個人的には半端な時間だなぁという印象でした。皆さんにも尋ねたところ、まさに十人十色のご都合があり、お話を聞かせてもらいたい方もいっぱいいて、みんなが合う時間帯を見つける難しさを感じました。とはいいながらも時間を工面して参加してくださった皆さん、本当にありがとうございました!

 あと、アレです。「車座になってわいわい言うような、顔の見えるイベントをやりたい」という趣旨でカメラオンを(案内ページでは)お願いしていたものですが、オンラインイベントにそれを求めるのは無理なのではないかという思いに、最近傾きつつあります。表情や反応が見えたほうがコミュニケーションとしての情報量は多いのだけど、本質は「技術的な情報交換」なので、むしろカメラオフの気楽さの中で「本来交換すべき情報に集中する」のが、いいのかもな、という気になりつつあります。ということで次回以降、そのへんの方針を変更するかもしれません。


 さて、内容。こんなあたりを中心にお話をしました。



 以下、個人的に気になった(というか、今これを書いている時点で思い出したり思いついたりしている)ものをいくつか。

ミラーへの配布停止の模様

 以前の日記にも書いた話題です。 MySQL 8.0.30 では、これまでファイルが配布されていた世界各地のミラーサーバー(ftpサーバーという名のhttpサーバー)へのファイル群の配布が行われませんでした。
 
sakaik.hateblo.jp

 ミラーサーバーに存在する MySQL 8.0 の最新バージョンは MySQL 8.0.29 ということになるのですが、まさにこれは今回「配布停止」にするほどの問題を抱えているバージョン。 ミラー処理が停止している(というかミラー元となるファイルが更新されていない?)ために、MySQL 8.0.29 が最新である状態のままなのは、あまりよろしくないので、この辺の対応がなにかなされるかもしれませんし、なされるといいなぁ。

なんといっても GIPK

 Generated Invisible Primary Key。8.0.30目玉の新機能ですね。(注:メンテナンスリリースです)
みなさんとお話をしてもなお、いまひとつ使いどころがピンと来ていませんが、「普通に扱っている分には存在が見えないPK」があると便利な世界があるのだろうと(とあるパッケージ製品とか)、想像するところまではできました。

(col1, col2) IN ((v1, v2), (v3,v4)....)

 大昔からある構文だったようです。私が全然勉強不足でした。使わない構文は知る機会にも出会えないので、今回リリースノート内で見て知ることができたのは良かったです。 MySQL 8.0.30 で直ったのは、これが「(Date型, Date以外の型)」の組み合わせになっているときの問題だったようです。よく見つけたな、こんなの。

INSTANT ADD COLUMN 系

 MySQL 8.0.29 での最大の問題だったこれらの機能が、MySQL 8.0.30 でずいぶん修正されました。ただし、まだ修正されきっていない部分があるようで、8.0.31での更なる修正が期待されます。といったところ。

innodb_doublewrite の DETECT_ONLY

 全然分かっていなかったので、丁寧に教えていただきました。ありがとうございます! 簡単にまとめると、今までは doublewrite を「する」「しない」の二択だった。これは、doublewrite すれば打ち所が悪く落ちた場合でもクラッシュリカバリできるし(2カ所に書いているのでそれを比較することで検知可能)、オフにすれば勿論検知すらできずに、データファイルが壊れた状態で稼働を続ける(そして壊れた部分=地雷=を踏むと落ちる)、という二択だったということ。 今回の DETECT_ONLY は「検知はできるがクラッシュリカバリは不可能」というものらしく、壊れた状態で稼働を続けるのを防ぐことができる。 doublewrite すれば安全にはなるのだけど、要するに2カ所に書くので結構処理負荷は高い。 というバーターの中で、バランス良く使えるのが DETECT_ONLY だと。
 ひとつ賢くなった!
・・・でも、どうやって検知するのか(doubleではないが何処かに何かを書かなければ検知できないのでは)という話をツッこみそびれてしまった。。不覚。

mysqld の設定や変数など

  • replica-allow-batching が mysqld/variables でデフォルト ON になった。なんだろこれ。
  • federated がデフォルト ON → OFF へ変更。
  • innodb-double-write がデフォルト TRUE → ON へ。これは↑で書いた DETECT_ONLY の追加により、TRUE/FALSE でなく、ON/DETECT_ONLY/OFF へと変更になったため
  • GIPK関係の設定が 追加

status/performance_schema系など

  • Innodb_redo_* 系の値やp_sテーブルが追加。SHOW INNODB STATUSで見ていたものが、statusやp_s で取れるようになった
  • collation関係。utf8がmb3を指しているのをmb4へと切り替えていく過程として、Collation 名に単に「utf8」とされていたものを utf8mb3 および utf8mb4 へと明示する変更