Save 37% off PRO during our Black Friday Sale! »

罠と呼ぶには大したことのない(フィクションの)MySQL 8.0のはなし

0deae06ab5d86b39feeec2e23a30b88a?s=47 yoku0825
PRO
December 01, 2019

罠と呼ぶには大したことのない(フィクションの)MySQL 8.0のはなし

2019/12/01 PHP Conference Japan (after party)
https://phpcon.connpass.com/event/151402/

0deae06ab5d86b39feeec2e23a30b88a?s=128

yoku0825
PRO

December 01, 2019
Tweet

Transcript

  1. 罠と呼ぶには大したことない (フィクションの)MySQL 8.0のはなし みんなこういうのが好きなんでしょ? 2019/12/01 yoku0825 PHP Conference Japan 2019

  2. \こんにちは/ yoku0825@とある企業のDBA オラクれない ‐ ポスグれない ‐ マイエスキューエる ‐ 生息域 Twitter:

    @yoku0825 ‐ Blog: 日々の覚書 ‐ 日本MySQLユーザ会 ‐ MySQL Casual ‐ 1/31
  3. 罠と言うほど大したものはありませんが © tomomo1015 -san 2/31

  4. binlog_expire_logs_seconds 3/31

  5. binlog_expire_logs_seconds expire_logs_days (単位は “日”) が非推奨、 binlog_expire_logs_seconds (単位は “秒”, デフォルト2592000秒=30日)に 「明示的に指定してないからbinlog消えない設定になってる」「ざんねーん、8.0

    ちゃんでしたー」 4/31
  6. default_authentication_plugin 5/31

  7. default_authentication_plugin MySQL 5.6とそれ以前には存在しない認証( caching_sha2_password )がデフォル トに 「最近のクライアント使えば通るでしょ」 「最初の1回はSSLかソケット接続でないと転ける」 「なにそれ」 日々の覚書:

    MySQL 8.0.4におけるデフォルト認証形式の変更 日々の覚書: MySQL 8.0のcaching_sha2_password + 非SSL接続が転ける 6/31
  8. collation_server 7/31

  9. collation_server MySQL 8.0から character_set_server のデフォルトが utf8mb4 に変更 ついでに utf8mb4 のデフォルトコレーションも

    utf8mb4_0900_ai_ci に変更 「コレーションって何…」 8/31
  10. collation_server collation mysql = MySQL ハハ != パパ びょういん !=

    び よういん != MySQL = MyS QL = != ≠ utf8mb4_ge neral_ci o o o x x o utf8mb4_09 00_ai_ci o x x o o x utf8mb4_ja_ 0900_as_cs x o o o o o utf8mb4_bin x o o o x o 9/31
  11. information_schema_stats_expiry 10/31

  12. information_schema_stats_expiry SHOW TABLE STATUS の結果をキャッシュするよ! デフォルトは 86400 秒 = 1日だよ!

    「誰得」 日々の覚書: MySQL 8.0のSHOW TABLE STATUSが全然更新されない件 11/31
  13. innodb_autoinc_lock_mode 「デフォルトが2になった」 「なるとどうなるの?」 「同時に INSERT INTO .. や LOAD DATA

    INFILE .. で連番を払い出そうとすると混 じる」 「マジか」 日々の覚書: innodb_autoinc_lock_mode = 1 vs 2 でバルクインサートが競合し た時のAUTO_INCREMENTの挙動が違うはなし 12/31
  14. internal_tmp_disk_storage_engine 13/31

  15. internal_tmp_disk_storage_engine 「パラメーターなくなった」 「ということは?」 「TempテーブルがDiskに落ちると必ずInnoDB」 「うわあ」 「InnoDBのテンポラリーテーブルはあふれると死ぬ」 「ぎゃあ」 日々の覚書: MySQL 5.7.6以降では暗黙のテンポラリーテーブルがあふれると死ぬ

    14/31
  16. local_infile 15/31

  17. local_infile 「 LOAD DATA LOCAL INFILE を使うには local_infile = 1

    を明示的に設定しない といけなくなった」 「面倒」 「しかもこれ mysql コマンドラインクライアント側でも有効にする必要がある」 「何それ」 「両方とも同じ名前の別のパラーメーター」 日々の覚書: MySQL 8.0でLOAD DATA LOCAL INFILEが “ERROR 1148 (42000): The used command is not allowed with this MySQL version” で失 敗する時 16/31
  18. log_error_verbosity 17/31

  19. log_error_verbosity 「バージョンアップしてからログ出力減ったな…」「デフォルトではワーニング以 上しか出さなくなったからね」「マ!?」 18/31

  20. log_slave_updates 19/31

  21. log_slave_updates 「バージョンアップしてからスレーブの容量が大きくなった?」 「log_slave_updatesデフォルトになったからね」「マ!?」 20/31

  22. master_info_repository, relay_log_info_repository 21/31

  23. master_info_repository, relay_log_info_repository 「バージョンアップしてから master.info と relay-log.info が消えた…」 「 mysql スキーマの

    slave_master_info テーブルと slave_relay_log_info テーブ ルに記録されてるで」 「オフラインで参照するのが難しくなった…」 22/31
  24. mysqlx 23/31

  25. mysqlx 「バージョンアップしてから何故か3306と33060ポートをLISTENしている…」 「Xプロトコルを喋るためのポートを自動でLISTENするで」 「しかもドキュメントに無効化する方法が書いてない…」 「 mysqlx = OFF でできる」 24/31

  26. GROUP BYによる 暗黙のソートがなく なる 25/31

  27. GROUP BYによる暗黙のソートがなくなる 「ORDER BYのないGROUP BYは5.7とそれ以前と結果が変わるかも知れない」 「…フツーでは?」 「フツーなんだけどさ」 日々の覚書: MySQL 8.0では「GROUP

    BYによる暗黙のソート」がされなくなるよ 26/31
  28. GROUP BYによる暗黙のソートがなくなる 27/31

  29. 増える予約 語 28/31

  30. 増える予約語 「ADMINがダメになったんだっけ?」 「そういうレベルでなく「増えてる」」 version 予約語 8.0.0 ROLE 8.0.1 GROUPING, RECURSIVE,

    OF, CUBE 8.0.2 ROW, CUME_DIST, DENSE_RANK, FIRST_VALUE, GROUPS, LAG, LAST_VALUE, LEAD, NTH_VALUE, NTILE, OVER, PERCENT_RANK, RANK, ROW_NUMBER, WINDOW 8.0.14 LATERAL 8.0.17 ARRAY, MEMBER 29/31
  31. 増える予約語 増えるだけじゃなくてたまに「減ってる」 心のMockだけじゃなくて 本物のMySQLを使った回帰テストを書くのが超オスス メ 個人的には「英2単語以上を “_” 区切り」ならそうそう食らわないし ‐ どうしても1単語にするなら先頭に

    “_” をつけておくと回避率が高い ‐ SELECT * FROM information_schema.keywords WHERE reserved = 1 の結果を比較したい… と思ったら “ARRAY” を information_schema.keywords にリストするの忘れた、とかいうバグ修正があって草w ww https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-18.html ‐ 30/31
  32. Any Questions and/or Suggestions? 31/31