Upgrade to Pro — share decks privately, control downloads, hide ads and more …

MySQL 8.0に負けないテストの作り方(仮)

MySQL 8.0に負けないテストの作り方(仮)

0deae06ab5d86b39feeec2e23a30b88a?s=128

yoku0825
PRO

June 02, 2020
Tweet

Transcript

  1. MySQL 8.0に負けないテストの作り方(仮) 「変わったこと、変わらなかったこと」 2020/06/02 yoku0825 吉祥寺.pm22

  2. 吉祥寺.pmは11 以来約3年ぶり 1/21

  3. ブッキング間違って 3時間後から深夜メ ンテ( ゚д゚) 2/21

  4. I have no (´・ω・`) 3/21

  5. 吉祥寺.pm22【オ ンライン】 4/21

  6. テーマ 5/21

  7. 「変わったこと、変 わらなかったこと」 6/21

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

    @yoku0825 ‐ Blog: 日々の覚書 ‐ 日本MySQLユーザ会 ‐ MySQL Casual ‐ 7/21
  9. MySQLの尻に敷かれる毎日 (c)tomo 8/21

  10. 以上変わらな かったこと 9/21

  11. MySQL 8.0 mysql80 160> SELECT CURDATE() /* JST */; +------------+

    | CURDATE() | +------------+ | 2018-04-20 | +------------+ 1 row in set (0.00 sec) mysql80 160> SELECT @@version; +-----------+ | @@version | +-----------+ | 8.0.11 | +-----------+ 1 row in set (0.00 sec) 10/21
  12. MySQL 8.0 mysql80 671> SELECT CURDATE() /* JST */; +------------+

    | CURDATE() | +------------+ | 2020-06-02 | +------------+ 1 row in set (0.00 sec) mysql80 671> SELECT @@version; +-----------+ | @@version | +-----------+ | 8.0.20 | +-----------+ 1 row in set (0.00 sec) 11/21
  13. MySQL 8.0 ナッツシェル( What is New in MySQL 8.0 の章)が何故かどんどん増える

    $ curl -L -s https://dev.mysql.com/doc/refman/8.0/en/mysql-nutshell.html | perl -nlE 'if ($_ =~ /(8\.0\.\d+)/) { say $1 }' | sort -t "." -k 3 -n | uniq -c 1 8.0.0 3 8.0.2 4 8.0.3 2 8.0.4 2 8.0.12 6 8.0.13 6 8.0.14 9 8.0.16 10 8.0.17 6 8.0.18 7 8.0.19 9 8.0.20 8 8.0.21 8.0.15はガチで8.0.14のリグレッションを1件だけ直した「メンテナンスリリース」だった。よってWhat is Newの中にはない 12/21
  14. MySQL 8.0は1つ1つのメンテナンスリリースにメジャーバージョンアップ並 みの機能追加をぶち込んでくる version New Feature 8.0.12 Instant ADD Column

    8.0.13 式デフォルト, 関数インデックス 8.0.14 Lateral, InnoDBパラレルスキャン, log_slow_extra 8.0.16 CHECK制約, partial_revokes, Async C-Library 8.0.17 Clone, 配列INDEX, JSON_SCHEMA_VALID, Anti- semijoin, binlog暗号化 8.0.18 Hash-join, EXPLAIN ANALYZE 8.0.19 InnoDB ReplicaSet, 時刻リテラルのオフセット, VALUESス テートメント 8.0.20 Binlog圧縮 一部抜粋しただけです 13/21
  15. MySQL 8.0は1つ1つのメンテナンスリリースにメジャーバージョンアップ並 みの機能削除もぶち込んでくる version Deprecated Removed 8.0.12 GROUP BY ..

    ASC - 8.0.13 PAD_CHAR_TO_FULL_LENGTH GROUP BY .. ASC 8.0.14 ibdata1でのパーティショニング - 8.0.16 mysql_upgrade, sha256_password 暗黙のテンポラリーテーブルMyISAM 8.0.17 ZEROFILL, DECIMAL with UNSIGNED, &&, || , 非整数型での auto_increment, CALC_FOUND_ROWS - 8.0.18 MYSQL_PWD, relay_log_info_file - 8.0.19 YEAR型の桁指定 INT型の桁指定の表示 8.0.20 UNION with INTO, INSERT INTO .. DUPLICATE KEY UPDATEの中での VALUES - 一部抜粋しただけです 14/21
  16. MySQL 8.0 「メンテナンスリリース」 だと言い張る The MySQL 8.0.12 Maintenance Release is

    Generally Available | MySQL Server Blog ‐ The MySQL 8.0.13 Maintenance Release is Generally Available | MySQL Server Blog ‐ The MySQL 8.0.14 Maintenance Release is Generally Available | MySQL Server Blog ‐ The MySQL 8.0.16 Maintenance Release is Generally Available | MySQL Server Blog ‐ The MySQL 8.0.17 Maintenance Release is Generally Available | MySQL Server Blog ‐ The MySQL 8.0.18 Maintenance Release is Generally Available | MySQL Server Blog ‐ The MySQL 8.0.19 Maintenance Release is Generally Available | MySQL Server Blog ‐ The MySQL 8.0.20 Maintenance Release is Generally Available | MySQL Server Blog ‐ 8.0.15はガチで8.0.14のリグレッションを1件だけ直した「メンテナンスリリース」だった。よって公式ブログに記事は無い() 15/21
  17. メンテナンスリリース() 新機能は使いたい…けどメンテナンスリリース(?)を適用すると機能が消えるか も いわゆる「非互換なSQL」が存在する ‐ 5.0から5.7の間ではなかなかなかったような変更がフツーに入ってくる… ‐ なるほど今流行りのあじゃいるってやつですねわかります() そしたらこっちもこっちで負けないようなテストにしないと… ‐

    16/21
  18. MySQL 8.0の進化に取り残されないようなテスト…の前に “What Is New in MySQL 8.0” (俗称ナッツシェル) の

    “Features {Deprecated| Removed} in MySQL 8.0” は有効な情報源 https://dev.mysql.com/doc/refman/8.0/en/mysql-nutshell.html ‐ MySQL ShellのUpgrade Checkerは「存在するオブジェクト」に関しては有効 予約語とカブるカラム名、非推奨になった属性で作られているストアド、etc. ‐ https://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-shell-utilities-upgrade.html ‐ 17/21
  19. MySQL 8.0の進化に取り残されないようなテスト モックではなく実物を使う Test::mysqld ‐ Dockerコンテナでもいい ‐ 拾えるなら SHOW WARNINGS

    は全部拾う 拾えなくても performance_schema.events_errors_summary_global_by_error や performance_schema.events_statements_summary_by_digest が使えるかも、諦め ないで! 18/21
  20. デモ yoku0825/kichijojipm_22: Demo on kichijoji.pm #22 19/21

  21. 参考 ぼくらが8.0に至ったみちのり(踏破) 20年前のMySQL、今のMySQL 罠と呼ぶには大したことのない(フィクションの)MySQL 8.0のはなし 20/21

  22. Any Questions and/or Suggestions? 21/21