Update for last week (2019-10-14 ~ 2019-10-20)
MySQL Weeklyでは1週間ごとにMySQLのrelease-note, bug, official blog, organizationによるblog, 個人のblogをまとめ紹介しています。
更新は月曜 10時(AM)です。先週一週間のMySQL関連の更新を再確認するのにご活用ください。
また、このブログ記事はGitHub上で管理されていますMySQL-weekly repository。Issue, pull-request歓迎です。(完全に同期できているわけではありません)
せっかくの8.0.18リリースの週ですが、体調不良で各種ブログは読めませんでした。
今週水曜日までにコメントを追加予定です。
追加しました。
Personal blogは今回はskipします。
Release note
(https://dev.mysql.com/doc/relnotes/mysql/8.0/en/)
8.0.18
https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-18.html
影響ありそうなものをピックアップ!!
- Account Management Notes
CREATE USER
,ALTER USER
,SET PASSWORD
でランダムなパスワードを生成してくれるIDENTIFIED BY RANDOM PASSWORD
が追加された- https://dev.mysql.com/doc/refman/8.0/en/password-management.html#random-password-generation
- Configuration Notes
- CMakeオプション等で変更
- wolfSSLをサポートしなくなりOpenSSLのみ
- Connection Control Notes
- server-clientのコネクションでzstdによる圧縮が可能になった
- https://dev.mysql.com/doc/refman/8.0/en/connection-compression-control.html
- Deprecation and Removal Notes
MYSQL_PWD
がdeprecateに指定された
- Keyring Notes
- HashiCorp Vaultの
keyring_hashicorp
プラグインが利用可能になった
- HashiCorp Vaultの
- Optimizer Notes
- Hash joinが実装された
- indexのないテーブルで等価条件でのjoinで有効
- optimizer switch, optimizer hintで有効無効をコントロール可能
- hash joinに使われるメモリサイズは
join_buffer_size
でコントロール可能 - メモリに乗り切らない場合は
open_file_limit
を調整する必要がある - hash joinされたかどうかは
explain format=tree
かexplain analyze
で確認可能 - 詳しくはHash Join Optimization
- EXPLAIN ANALYZEで、iterator-basedなtimingやコストなどの情報が取得可能になった
- 型が一致しないクエリでキャストオペレーションが入る
- 一時的な型(temporal types)と数値型の比較はDOUBLEとして、DATE, TIME, DATETIME同士での比較はDATETIMEとして暗黙的にキャストされる
- 例えば
SELECT * FROM t1 JOIN t2 ON t1.int_col = t2.date_col
このクエリはSELECT * FROM t1 JOIN t2 ON CAST(t1.int_col AS DOUBLE) = CAST(t2.date_col AS DOUBLE)
のように書き換えられる - これらのキャストがどのように起きたかはexplainで実行したあとに
show warnings
することで見ることができる
- Hash joinが実装された
- Packaging Notes
- Pluggable Authentication
- Spatial Data Support
- ST_Distance()がすべての地理情報型のSRS引数をサポート
- 詳しくはSpatial Relation Functions That Use Object Shapes
- sys Schema Notes
- sys.schema_unused_indexesからunque indexが排除される
- sys.ps_is_consumer_enabled()関数がNULLでない未知の値を渡されたときにerrorを返すように修正
- sys schemaが別のgit repositoryではなく、scripts/sys_schemaで管理されるようになった
- Functionality Added or Changed
innodb_idle_flush_pct
変数でアイドル時のpage flushを制御可能になった- これによってSSDの寿命を伸ばすことが狙い
- 詳しくはLimiting Buffer Flushing During Idle Periods
- group replicationへの改善
- TLSv1.3のサポート(MySQL Serverでは8.0.16からサポート)
group_replication_exit_state_action
でOFFLINE_MODEが指定可能になった
- PRIVILEGE_CHECKS_USERでreplication channelに流れてくるトランザクションに実行権限があるか確認可能
- relay log info logとmaster info logがdeprecatedになったので、relay_log_info_file system variableと、--master-info-fileオプションもdeprecatedに変更
- --slave-rows-search-algorithmsオプションと、slave_rows_search_algorithms変数がdeprecated
- WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS()がdeprecatedにこれを利用している場合は
WAIT_FOR_EXECUTED_GTID_SET()
を使うように(failoevrなどで別のチャネルやクライアントから接続された場合にハングする可能性がある) - Protobuf librariesがdynamic linkされるようになった
- Bugs Fixed
- later
5.7.28
5.6.46
Bugs
基本的にMySQL Server, 5.7以上のbug fixのみまとめます
Bug #97185 Remove dead code from ST_SCHEMA_TABLE
Remove dead code from ST_SCHEMA_TABLE
ST_SCHEMA_TABLE
構造体がInformation Schemaのためにあるが、使われていない- 8.0.20で削除予定
Organization blogs
-
- The MySQL 8.0.18 Maintenance Release is Generally Available
- 8.0.18の新機能に関する説明をWLやbug number付きでリストアップ
- 例
- Hash joing WL
- EXPLAIN ANALYZE
- type cast
- control IOPS
- MySQL InnoDB Cluster – What’s new in Shell AdminAPI 8.0.18 release
- MySQL is OpenSSL-only now !
- 8.0かrYaSSLとWolfSSLがサポートされなくなり、OpenSSLのみをサポートするようになったよという話
- MySQL Shell 8.0.18 – What’s New?
- MySQL EXPLAIN ANALYZE
- EXPLAIN ANALYZEのサンプル付きの解説
- EXPLAINやEXPLAIN FORMAT=TREE との違いは実際に実行して、その時の情報を表示してくれる点
- 内部的な実行手順の他に以下が分かる
- 最初の行を取得するまでにかかった時間
- 全部の行を取得するまでにかかった時間
- 読みだした行数
- 特定の処理をloopした回数
- The MySQL 8.0.18 Maintenance Release is Generally Available
-
Replication with restricted privileges
- SQL_threadで適用するクエリをchannelベースで権限チェックする方法の説明
- 設定を確認するにはp_sのreplication_applier_configurationを見る
SELECT Channel_name, Privilege_checks_user FROM performance_schema.replication_applier_configuration;
Support for TLS 1.3 in Group Replication
- TLS1.3の設定方法の説明
Automatic member fencing with OFFLINE_MODE in Group Replication
- group replicationにおいて、mysqlは機能しないがclientからは接続できてしまう状況をoffline_modeでどのように制御するかを解説
Group Replication delivery message service
- service pluginのよってgroup replicationのメッセージサービスを利用する例の紹介
-
- Nothing
-
- Nothing
SmartStyle TECH BLOG (category MySQL and Percona)
- Nothing
-
- Nothing
-
- Nothing
Personal blogs
このブログ記事はGitHub上で管理されていますMySQL-weekly repository。Issue, pull-request歓迎です。(完全に同期できているわけではありません)