Update for last week (2019-07-22 ~ 2019-07-28)
Release note
8.0.17, 5.7.27, 5.6.45がリリースされました!!! 新しいMaintenance Release()によって大量のエントリがあるので、重要な、もしくは面白い機能をリストアップします。
今回から更新のあったMySQL High Availability ブログもOrganizationブログに追加しました! また、Categoryを作成してタグ付けすることにしました。
(https://dev.mysql.com/doc/relnotes/mysql/8.0/en/)
Changes in MySQL 8.0.17 (2019-07-22, General Availability)
- Character Set Support
- utf8mb4 character-setにutf8mb4_0900_binが追加
- 比較結果はutf8mb4_binとutf8mb4_0900_binで同じだが、0900_binのほうがより高速
- pad属性(The pad attribute)にスペースを使うかパディングをしないかの違いがある。詳しくは→ https://dev.mysql.com/doc/refman/8.0/en/charset-unicode-sets.html
- utf8mb4 character-setにutf8mb4_0900_binが追加
- Componene Notes
mysql_current_thread_reader
コンポーネントが利用可能- 実行中のthreadの情報を取得可能できそう(詳細は未調査)
- Configuration Notes
- ホスト名にASCII文字で255文字まで利用可能
- Debugging Notes
- Deprecation and Removal Notes (今回のリリースでRemovalはない)
- FLOAT(M,D), DOUBLE(M,D)のシンタックスがdeprecated
- 文字列データ型におけるBINARY属性をdeprecated,
_bin
collationがあるのでこれを利用すること AND
,OR
,NOT
演算子のシノニムである&&
,||
,!
がdeprecatedZEROFILL
属性がdeprecated, プログラムから明示的にLPAD()
等を使うようにFLOAT
,DOUBLE
,DECIMAL
とそのシノニムの型においてUNSIGNED
属性はdeprecatedFLOAT
,DOUBLE
とそのシノニムにおいてAUTO_INCREMENT
のサポートはdeprecatedSQL_CALC_FOUND_ROS
とFOUND_ROWS() functionはdeprecated
- Packageing Notes
- Performance Scehma Notes
- Performance_schemaのinstrumentationにおける、
rwlock
という名前だったpriority read/write locksはprlock
に変更され、wait/synch/prlockから始まるように変更。またunlock操作の情報もていきょうされるようになる
- Performance_schemaのinstrumentationにおける、
- Plugin Notes
- Functionality Added or Changed
- [JSON] multi_valued indexes on JSON arrays
- [JSON] JSON_SCHEMA_VALID()とJSON_SCHEMA_VALIDATION_REPORT()関数が追加
- mysqldumpで
--set-gtid-purged=COMMENTED
が指定可能 SHOW CREATE USER
によって出力されるIDENTIFIED WITH
句によって表示されるhash文字列がターミナルの改行等を壊さないようにprint_identified_with_as_hex
システム変数が追加- DOUBLE, FLOAT, REALへの明示的なキャストがCAST(), CONVERT()によって可能
- Redo Log Archiving https://dev.mysql.com/doc/refman/8.0/en/innodb-redo-log.html#innodb-redo-log-archiving
- Clone Plugin
- リモートのMySQLサーバからInnoDBのデータをコピーすることが可能になる、Group Replicationにおいてはメンバーとして追加することが可能
- https://dev.mysql.com/doc/refman/8.0/en/clone-plugin.html
- https://dev.mysql.com/doc/refman/8.0/en/group-replication-cloning.html
- Group Replicationのcompatibility policiesが同一メジャーバージョンではなく、patchバージョンに変更
- [optimizer]
NOT IN (subquery), NOT EXISTS (subquery), IN (subquery) IS NOT TRUE, or EXISTS (subquery) IS NOT TRUE
これらをantijoinに置き換える - 大きいデータセットに対するparallel read threadのパフォーマンス向上
- Bugs Fixed
- many...
Changes in MySQL 5.7.27 (2019-07-22, General Availability)
おそらく来週
Changes in MySQL 5.6.45 (2019-07-22, General Availability)
P-Rお待ちしていますm(_ _ )m MySQL-weekly repository
Bugs
serverity >= S5(Performance)
でupdatedでdesc sort、結果の今週分を見る
- Accelerated AES with ARMv8 Crypto Extensions in yaSSL
- status:
Won't fix
- ARMv8固有の暗号化拡張(cryptography extensions)を利用することでAESを高速化できるという提案
Environment
やPlatform \ Case
の部分は伏せ字になっているのか文字化けしているのか、こういうものなのか私の知識ではわからない- 経緯を追ってみるとなにやら面白いけど最終的に
YaSSL support will be removed in an upcoming release.
となって終わっている
- status:
Organization blogs
- MySQL server blog: https://mysqlserverteam.com/
- The MySQL 8.0.17 Maintenance Release is Generally Available
- MySQL Server Blogによる8.0.17 Maintenance Releaseの告知
- Provisioning by Cloning: Clone Pluginについての紹介,
Clone local replica
,Clone remote replica
,Clone Remote provisioning
,Clone Replication Coordinates
,Suport cloning encrypted database
が簡単に紹介されている - Multi-valued indexes: 1ドキュメント内のJSON arrayの中身の複数の値にindexが貼れるようになった
- JSON Schema: JSON_SCHEMA_VALID(), JSON_SCHEMA_VALIDATION_REPORT()の追加
- Optimizer improvements: NOT EXISTS, NOT INがanti-semi-joinに書き換えられるようになった
- Volcano iterator: Volcano modelに基づいて、コードがシンプルになっている. これはhash joinや EXPLAIN, EXPLAIN ANALYZEを改良するための前準備だそう
- Character Sets: Character setsとなっているがCollationの話、utf8mb4_binと同等だがソートが速いutf8mb4_0900_binが追加
- Replication: binlog-cacheから溢れてテンポラリファイルに書き出したbinlogも暗号化されるようになった
- Group Replication: Clone pluginを取り込んだリカバリ機能
- Router: MySQL Routerのモニタリング基盤の追加とモニタリング用のRESTインターフェースの追加
- MTR testsuite: MyISAMが必要だったテストケースを分離
- Other/Deprecation: いろいろ
- MySQL Shell 8.0.17 – What’s New?
- MySQL Shell 8.0.17の新機能紹介
- 特にドキュメントへのリンクがあるわけではないのでかじょうがきの 変更リストを見たい場合は見ると良さそう
- MySQL InnoDB Cluster – What’s new in Shell AdminAPI 8.0.17 release
- MySQL ShellのAdminAPIの新機能紹介
- AdminAPIを使ったAutomatic Node Provisioningがコマンド付きで詳細に解説されている
- Clone: Create MySQL instance replica
- Clone pluginを使ったクローンの作成の解説
- これに従ってやれば一旦クローンを作成してみることができる
- MySQL Shell Plugins – Introduction
- タイトル通りMySQL Shell pluginの導入
- Shell pluginを使ってJavaScriptでカスタムな情報を加えるサンプルが紹介されている
- The MySQL 8.0.17 Maintenance Release is Generally Available
- MySQL High Availability blog: https://mysqlhighavailability.com/
MySQL 8.0.17 Replication Enhancements
- Enhanced Group Replication distributed recovery with automated instance cloning.
- Copy pluginによるによるCloneの作成とGroup Replicationでのmember追加についての紹介
- Enhanced cross-version inter-operability for Group Replication.
- Group Replicationにおいて、バージョン間の際をうまく扱うための改善があったらしい、詳細は不明
- Encryption of conditional and temporary, on-disk, binary log capture cache.
- bufferから溢れてdiskに落ちたbinlogも暗号化されるようになった
- Protocol compression support for mysqlbinlog.
- mysqlbinlogでリモートサーバからbinlogをfetchするときに暗号化することができる
- Enhanced Group Replication distributed recovery with automated instance cloning.
Automatic provisioning in Group Replication
- Group replication, Clone pluginを使う際に新しく入った
group_replication_clone_threshold
、Purged Data, Credentialについての紹介
- Group replication, Clone pluginを使う際に新しく入った
- A Breakthrough in Usability – Automatic Node Provisioning
- 2つ前のblogで公開されたdemo動画 (MySQL InnoDB Cluster – Automatic Node Provisioning)のより詳細な解説
- ここでDistributed recoveryとClone Pluginの違いや挙動の説明が読める
- この記事を読んでClone pluginがlogical backupではなくphysical backupをとっていることがわかった
- group replicationにおいて、MySQL Shellを使って
<Cluster>.addInstance()
を実行してからの挙動のフローチャートもあり、このあたりの操作の整理がされている
- mysqlbinlog: support for protocol compression
- mysqlbinlogでリモートサーバからbinlogを取得する際に
--compress or -C
で圧縮することが可能
- mysqlbinlogでリモートサーバからbinlogを取得する際に
- Binary Log Encryption: Encryption of Temporary Capture Files
- binlogを吐く際にbufferから溢れたbinlogをTemporary fileに吐くときにこれまではそれを暗号化することができるようになった
- Improved handling of different member versions in Group Replication
- Group Replication内では基本的に8.0.17からパッチバージョンが同じもののみしかサポートされない、しかしローリングアップデートの際などは複数のバージョンが混在する場合がある。その際のPrimary member selectionやcompatibility, Upgrade作業に関する情報
- 筆者がGroup Replicationに詳しくないので、詳細はリンクへ。
- Percona blog (MySQL): https://www.percona.com/blog/
- Connect to MySQL after hitting ERROR 1040: Too many connections
- MySQLからError 1040(Too many connections)が返された場合にどうするかという解説
- Percona Server for MySQLでは
extra_port
, MySQL 8.0.14以降ではadmin_port
等の障害対応用のportを開けられるので、事前にそれを開けておきましょうという話 - gdbで刺してmax_connectionをいじるというハックも紹介されている (https://www.percona.com/blog/2010/03/23/too-many-connections-no-problem/ )
- Percona Monitoring and Management (PMM) 2 Beta 4 Is Now Available
- Percona Monitoring and Management(PMM)の2 Beta 4がリリースされた。
- 各種機能が充実したのと特にProxySQLのmonitoringが可能になった
- Debian 10 “Buster” Packages Available for Percona Products
- Percona packaging repositoriesにDebian 10(Buster)用のパッケージがリリースされた
- Percona Server, Percona XtraBackup 2.4, Percona Toolkit等がパッケージから利用可能
- Connect to MySQL after hitting ERROR 1040: Too many connections
- MySQL道普請: https://gihyo.jp/dev/serial/01/mysql-road-construction-news
- Nothing
- gihyo.jp MySQL-tag
- Nothing
- Yakst MySQL-tag: https://yakst.com/ja/tags/mysql
- Nothing
Personal blogs
- MySQL InnoDB Cluster from scratch – even more easy since 8.0.17
- MySQL Router 8.0.17 and the REST API
- Overview on MySQL Shell 8.0.17 Extensions & Plugins and how to write yours !
- lefred-san
- MySQL Shell Extensionをpythonで作るサンプル
- ここではコマンドを叩くとランダムな文字列を返すサンプルを使って紹介している
- 公式ブログの方ではJavaScriptのサンプルがあったので、jsが良い人はそちらを参照のこと
- Create an Asynchronous MySQL Replica in 5 minutes
- lefred-san
- GTID前提でClone Pluginを使ってreplicaを5分で作成するサンプル紹介
- これとyoku0825さんの記事を合わせて見ればドキュメントを読み解かなくても簡単に試すことができる
- MySQL 8.0.17 and Drupal 8.7
MySQL InnoDB Cluster, automatic provisioning, firewall and SELinux
MySQL 8.0.17でついにCloneプラグインが入った
- yoku0825-san
- Clone Pluginを使った早速のやってみた記事
- まずは試してみたい方におすすめ
- MySQLが刺さった時にざっと見るためのメモ
- yoku0825-san
- これぞACEの記事といった熟練MySQLerの記事
- こういうメモがサラッと出てくるあたりがプロ
- 必読なので要約無し
- 小ネタ/MySQL 8.0.17 で utf8mb4_0900_bin を試す
- hmatsu47-san
- utf8mb4_0900_binとutf8mb4_binの簡単な比較
- 1クエリではどちらが速いかを断言することはできなかった様子
- ALTER TABLEにかかる実行時間を見積もりたい
- tom__bo
- ALTER TABLEにかかる時間を実行前に見積もるための実験
- いくつかのtypeのALTER TABLE実行を100MB, 1GB, 10GBのテーブルサイズに対して実行、またそれぞれでon/off memory時の違いも実験
このブログ記事はGitHub上で管理されていますMySQL-weekly repository。Issue, pull-request歓迎です。(完全に同期できているわけではありません)
Update for last week (2019-07-15 ~ 2019-07-21)
月曜日に先週一週間のMySQL関連の更新を再確認するのにご活用ください。
Release note
(https://dev.mysql.com/doc/relnotes/mysql/8.0/en/)
- Nothing
Bugs
serverity >= S5(Performance)
でupdatedでdesc sort、結果の今週分を見る
- nothing
Organization blogs
MySQL server blog: https://mysqlserverteam.com/
- Nothing
Percona blog (MySQL): https://www.percona.com/blog/
- MySQL: The Impact of Transactions on Query Throughput
- selectだけをするクエリをトランザクションとして実行する(begin, commit等で挟む)とどの程度Throughputが落ちるのかという検証。
- Percona Server for MySQLを含む5.6~8.0の比較もある。
- 明示的にトランザクションとして実行した場合、begin, commitでもserver,client間でクエリのやり取りが発生するからThroughputが落ちるよねという結論。
- 同時に3threadだけの単純なselectで実験したため、versionが上がるごとにThroughputが低下しているが、より新しいバージョンでは並列度を上げた時にパフォーマンスを出せるようにしているからとしている。
- Assessing MySQL Performance Amongst AWS Options – Part One
- Cloudの環境選択も含めMySQLインスタンスをどうやって利用するかを選択することはchallengingな課題になってきているよね?ということで、パフォーマンス比較の記事。
- 以下のMySQLを比較
- ストレージはio1, gp2でも比較
- 比較にはsysbench-tpccを500 warehouses/10 tables, 128 threadsで30分間回している
- この結果だけを見ると
RDS InnoDB
<ec2 Percona InnoDB
<amazon aurora
<ec2 Percona RocksDB
ということになるけど、configについては全く触れていないので、どんな設定で実験して、どこがボトルネックになったのかは不明(それを書くのは大変なのはわかる) - 2部作で次回はcostについても触れるそう
- MySQL: Disk Space Exhaustion for Implicit Temporary Tables
- Tmp tableが使われるようなクエリで、そのtmp tableがon memoryで解決できずにtmpファイルに落ちる場合にdisk sizeが問題になるケースの説明と対策
- まずtmp tableを作る主なクエリに以下のものがある
GROUP BY
,ORDER BY
,DISTINCT
をつかうUNION
statementの評価がある- マージできない
VIEW
を使う(サブクエリを使うderived tableのため) - 複数テーブルに
UPDATE
をかける
- 5.6まではtmp_tableのストレージエンジンはMyISAMだったが、5.7以降はInnoDB
- 解決策(詳細は元記事へ)
- disk sizeを充分に増やす
- ibtmp1のサイズに上限のリミットをつける(要再起動)
internal_tmp_disk_storage_engine = MYISAM
を設定する- onlineで変更可能
SET GLOBAL internal_tmp_disk_storage_engine = MYISAM;
- onlineで変更可能
- クエリをoptimizeする(slow_logにどれくらいのtmp table sizeが使われたかでるらしい)
- Assessing MySQL Performance Amongst AWS Options – Part Two
- 前回の続き。今回はコスト面にフォーカスした内容
- IOPSやストレージサイズで課金する場合の状況が整理されていそう
- MySQL: The Impact of Transactions on Query Throughput
- MySQL道普請: https://gihyo.jp/dev/serial/01/mysql-road-construction-news
- 第101回 InnoDBバッファプールの状態を確認するさまざまな方法
- タイトル通り、InnoDBバッファプールの状況を確認するための解説。
SHOW GLOBAL STATUS
,SHOW ENGINE INNODB STATUS
によって出力される項目が解説されている。- 詳しく知らない人は必読
- そしてこのあたりに興味があればドキュメントまで読むと良さそう (記事中でもreferされてる-> https://dev.mysql.com/doc/refman/8.0/en/innodb-buffer-pool.html)
- 第101回 InnoDBバッファプールの状態を確認するさまざまな方法
gihyo.jp MySQL-tag
- Nothing
Yakst MySQL-tag: https://yakst.com/ja/tags/mysql
- Nothing
Personal blogs
- MySQL Technology Cafe #4 に参加してきた
- mita2-san
- MySQL Technology Cafe #4の参加レポート
- MySQL Technology Cafe #4参加してきた
- next4us-ti-san
- MySQL Technology Cafe #4の参加レポート
- MySQL 8.0 はダウングレードできない
- mita2-san
- 8.0からダウングレードできなくなって、CHECK制約などのダウングレード先にない機能を"使っていなくても"起動できない
このブログ記事はGitHub上で管理されていますMySQL-weekly repository。Issue, pull-request歓迎です。(完全に同期できているわけではありません)
Update for last week (2019-07-08 ~ 2019-07-14)
月曜日に先週一週間のMySQL関連の更新を再確認するのにご活用ください。
Release note
(https://dev.mysql.com/doc/relnotes/mysql/8.0/en/)
- Nothing
Bugs
serverity >= S5(Performance)
でupdatedでdesc sort、結果の今週分を見る
条件を適用した検索結果
Bug #94610
Server stalls because ALTER TABLE on partitioned table holds dict mutex
- Severity: S5(Performance), status: Verified
- PrtitionされたテーブルでのDDLが遅い
- パーティションが大量にあり、テーブルサイズも大きいテーブルでALTER操作を行うと、dictionary mutexが取られて、他のテーブルへの操作までもブロックされるという報告
- 報告者や同じ状況にあたった人はこれはS1(critical)か少なくともS3(Non-critical)以上に値するとコメントしていたりするが、回答者によるとこの問題は以下の2つが原因になっている
- Partitioned tableに対するALTERが非常に遅いという Bug #83435 の現象
- DROP TABLEなどでも同じmutex ロックを取るがそれらは一瞬で開放されるので、問題にならないだけ
- 回答者としては後者は仕様なので、バグではない、なので、前者が解決されればこの報告も解決されるだろうとのこと
- ドキュメントのONLINE DDLに関する説明が正しいかどうかは別にして、5.7ではこれらの挙動は変わらず、8.xではblockingな処理ではなくなるだろうとのこと
- 詳細はリンク先へ
この問題も気になるけど、Bug #83435
も知らなかった。両方とも行方が気になる。
BUG #83435
は 2016年10月に報告されてS1でVerifyされているけど、まだ解決していない。
報告者の説明が分かりづらくて何が問題なのか分かりづらい;;
Organization blogs
MySQL server blog: https://mysqlserverteam.com/
- Supporting all kinds of outer references in derived tables (lateral, or not)
- 8.0.14で追加された
LATERAL DERIVED TABLE
に続いて、DERIVED TABLE
におけるOUTER REFERENCEについての紹介。 - ドキュメントを読むのも良さそう https://dev.mysql.com/doc/refman/8.0/en/lateral-derived-tables.html
- 8.0.14で追加された
- Supporting all kinds of outer references in derived tables (lateral, or not)
Percona blog (MySQL): https://www.percona.com/blog/
- Percona XtraBackup 2.4.15 Is Now Available
- XtraBackup 2.4.15のリリース報告
- innodb_max_dirty_pages_pctで小数点の値が受け付けられるようになったらしい
- Percona XtraBackup 2.4.15 Is Now Available
MySQL道普請: https://gihyo.jp/dev/serial/01/mysql-road-construction-news
- Nothing
gihyo.jp MySQL-tag
- Nothing
Yakst MySQL-tag: https://yakst.com/ja/tags/mysql
- Nothing
Personal blogs
通知がいってしまうブログもあるので、個人のブログのURLを列挙するのはやめました
- lefred-san
- sakaik-san
- MySQL認定資格試験に挑戦(MySQL 5.7 Database Administrator(1Z0-888-JPN))
- MySQL認定資格試験について
- テストを受けようか迷っている人は参考にしてみると良いかも?(問題に関する直接的な話ではない)
- MySQL認定資格試験に挑戦(MySQL 5.7 Database Administrator(1Z0-888-JPN))
- next4us-san
- データを適当に作成するmysql_random_data_loadを試してみた
- 先週分で載せるのを忘れていました。。。m(_ _ )m
- Percona社が公開している
mysql_random_data_load
の紹介 - テーブル定義に従ってランダムにデータサンプルを作ってくれる
この記事はGitHub上で管理されています(MySQL-weekly repository)。Issue, pull-request歓迎です。 (完全に同期できているわけではありません)
Update for last week (2019-07-01 ~ 2019-07-07)
日曜日にこの記事を書くことが多いので、日曜更新をやめて、今回以降月曜日10時ごろ更新にしました。
月曜日に先週一週間のMySQL関連の更新を再確認するのにご活用ください。
Release note
(https://dev.mysql.com/doc/relnotes/mysql/8.0/en/)
- Nothing
Bugs
serverity >= S5(Performance)
でupdatedでdesc sort、結果の今週分を見る
Bug #96112
"SELECT x WHERE y ORDER BY x LIMIT 1" faster than "SELECT MIN(x) WHERE y"
- Severity: S5(Performance), status: Open
SELECT x WHERE y ORDER BY x LIMIT 1
がSELECT MIN(x) WHERE y
よりも簡単に早くなるという報告。- 例ではxをPKにしてもそうなるといっていて、確かにPKが昇順に並んでいるので、どちらのクエリもPKの先頭からたどってyを満たすレコードを返せば良い。
- 報告者のサンプルでのExplainの結果にはMIN(x)を使った方ではPKアクセスができていないことがわかる。
- さらに
show status like '%handler%'
でHander_read_rnd_nextがレコード数分アクセスしたことも確認している。 - Explainからテーブルアクセスになっていることは十分わかるけど、Hander_hogeの有効な使い方の例として面白い
Organization blogs
- MySQL server blog: https://mysqlserverteam.com/
- Nothing
- Percona blog (MySQL): https://www.percona.com/blog/
- Fixing a MySQL 1045 Error
- Error 1045の原因を解説している(大抵はpasswdの入力ミスだけど、あえていうなら、、、)
- (以下記事から理由だけ抜粋)
- Connecting to wrong host
- User does not exist
- User exists but client host does not have permission to connect
- Password is wrong, or the user forgot his password
- Special characters in the password being converted by Bash
- SSL is required but the client is not using it
- PAM backend not working
- Error 1045の原因を解説している(大抵はpasswdの入力ミスだけど、あえていうなら、、、)
- Percona Server for MySQL Highlights – binlog_space_limit
- Percona Server for MySQLに対する改善の紹介
- 小さめの変更であまり知られていないけれど有用なものを紹介していくらしい。期待。
- 今回はbinlogのexpireをbinlogのために利用しているディスクサイズによってもpurgeする昨日の紹介
- expire_logs_days(8.0ではbinlog_expire_logs_seconds)ではbinlogによるディスクサイズの容量を決めることはできないので、disk fullの対策として使えるらしい。
- (感想) 割とそこはPITRできるようにするのが重要で、disk fullを回避するためにbinlog消すのはだめなのでは?
- disk sizeのアラート閾値を余裕をもって調整して、PITRできる範囲で管理したほうが良さそう。そして今後はbinlog_expire_logs_secondsの粒度なら充分対応できそう
- Percona Live 2019’s Top 10 Highest-Rated Talks
- 前回の記事で同じようなTop10記事がありましたが、あれは発表部屋に入った人の人数のランキングでした。(部屋によって入れる人数が大きく異なるので、小さい部屋はそもそも人が入れなかったりする)
- おそらくPercona Live 2019専用アプリから投票を募集した結果からランキングを算出したのだと思う
- ちゃんとFBの発表もランクインしていた
- ランキング上位の発表が動画公開されていてありがたい
- MySQL to the Cloud! Thoughts on Migrating Away from On-Premise
- Cloud service(or DBaaS)にDBを移行する際のプロセスをざっくり説明している
- DBaaSをがfitする例として最初に
Simple schema
があるのうける。複雑なものは厳しいのだろうか?
- ALTERS, Foreign Keys, and Metadata Locks, oh my!
- 外部キー制約(以降FK)のあるテーブルで
ALTER TABLE
すると親のテーブルにSHARED UPGRADEABLE
なメタデータロックが掛かり、それよりwrite系のクエリが取得するロックの優先度が高いから、ALTER TABLE
がいつまでも実行されないケースがある - 詳しくは記事にて
- 解決策としてはONLINEで変更可能な
max_write_lock_count
(https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_max_write_lock_count)を使う。 - これはichirin2501さんのシャドーロックのスライドで見たやつな気がすると思ったけど、こちらはFKがあるテーブルに対するinsert時に親テーブルに共有ロックがかかるという現象だった
- 外部キー制約(以降FK)のあるテーブルで
- Setting World-Writable File Permissions Prior to Preparing the Backup Can Break It
- ファイルの権限管理はきちんとしようね(777にしない)という話
- 777になっているとxtrabackupが権限がゆるすぎるファイル(文中ではmy.cnf)を覗いてバックアップを取得するので、ibdファイルが暗号化されていることに復元時に気づけずに詰むことがある
- Fixing a MySQL 1045 Error
- MySQL道普請: https://gihyo.jp/dev/serial/01/mysql-road-construction-news
- 第100回 「MySQL道普請便り」と探るMySQLの進化
- MySQL道普請ついに100回!!
- サンプルで使われたMySQLバージョン、道普請内のタグで振り返るMySQLとMySQL道普請のまとめ
- gihyo.jp MySQL-tag
- 第47回 MySQL for Excelのご紹介,PostgreSQL 12ベータ版登場
- 2019年6月のMySQL製品のアップデートとしてMySQL for Excel 1.3.8
- 機能の説明に
ExcelのデータをMySQLサーバーにエクスポートできるほか,インポートしたデータを編集すると自動的にMySQLサーバーに反映させることも可能
とあって驚き。
- 第47回 MySQL for Excelのご紹介,PostgreSQL 12ベータ版登場
- Yakst MySQL-tag: https://yakst.com/ja/tags/mysql
- Nothing
Personal blogs
通知がいってしまうこともあるので、個人のブログのURLを列挙するのはやめました
更新があったものだけとリストアップします
- tom__bo:
- MySQL Weekly 始めました
- このブログを開始したという告知です
- Personal blogsはここのリストにあるものを毎週確認する予定です。
- 個人のブログのURLを乗せると通知を毎週送ることになってしまうので、更新があったものだけを貼るようにしたため
- MySQL Weekly 始めました
Update for this week (2019-06-30)
Release note
(https://dev.mysql.com/doc/relnotes/mysql/8.0/en/)
- Nothing
- 次回は8.0.16の内容まとめ。
- 今後はGAになったバージョンが出たらそれについてまとめ
Bugs
serverity >= S5(Performance)
でupdatedでdesc sort、結果の今週分を見る
Bug #94283
MySQL 8.0.15 is slower than MySQL 5.7.25
- 5.7.25よりも8.0.15のパフォーマンスが悪い.
- Sysbench oltp_read_writeの実験において、特に
trx_commit=0 and sync_binlog=1000
の場合22%の性能悪化 - group replication環境でのパフォーマンス悪化を検証していたが、単体のMySQLですでのパフォーマンスが悪いことに気づいたとのこと
- Sysbench oltp_read_writeの実験において、特に
- 報告自体は4ヶ月ほど前のもの今回はコメントで、
innodb_max_dirty_pages_pct=75 innodb_max_dirty_pages_pct_lwm=0
使ってみてくれってコメントついたことによる更新
- my.cnfの設定、HWやsysbenchのoptionについては下記URLを参照のこと
報告者の実験結果 (参考: https://bugs.mysql.com/bug.php?id=94283)
+-------------------------------------------+--------------+--------------+-------+ | case | MySQL 5.7.25 | MySQL 8.0.15 | ratio | +-------------------------------------------+--------------+--------------+-------+ | trx_commit=0, binlog=off | 11402 tps | 9840(*) | 1.16 | +-------------------------------------------+--------------+--------------+-------+ | trx_commit=1, binlog=off | 8375 | 7974 | 1.05 | +-------------------------------------------+--------------+--------------+-------+ | trx_commit=0, binlog=on, sync_binlog=1000 | 10862 | 8871 | 1.22 | +-------------------------------------------+--------------+--------------+-------+ | trx_commit=0, binlog=on, sync_binlog=1 | 7238 | 6459 | 1.12 | +-------------------------------------------+--------------+--------------+-------+ | trx_commit=1, binlog=on, sync_binlog=1 | 5970 | 5043 | 1.18 | +-------------------------------------------+--------------+--------------+-------+
- 感想
- sync_binlog=1000ってそういえば0/1以外もあった(binlogを指定された数ためてからsyncする、OSにsyncを任せない)
- sync_binlog=1000はともかく、その下の
trx_commit=1, binlog=on, sync_binlog=1
だと5.7.25が18%良いのは覚えておく - 報告者は
How to report
と言いつつMake MySQL 8 Great Again MySQL 8.0 does not have to be slower than MySQL 5.7
とか言ってて面白い。 - こういう内容でもreportできて、receiveされるんだな...このあとの対応気になる(どうなったらcloseされるのか)
MySQL server blog
- Nothing
Organization blogs
Percona blog (MySQL): https://www.percona.com/blog/
- pt-kill: How it Works
- pt-killで問い合わせ多いけど使い方間違ってること多いから解説するよって記事。
- オプションで以下の条件をつけたときにこれらの条件はOR条件でマッチするクエリを検索するからAND条件と思ってるとほかも巻き込んで殺すよって話。怖い
--busy-time 2s --match-info "(select|SELECT)"
この場合selectで2秒以上のクエリがkillされるんじゃなくて、どっちかに当てはまったものが殺される。。。 ん?write系も? (要確認...使わないほうが良いのでは?)
- Adaptive Hash Index on AWS Aurora
- Auroraのreader nodeではwriter nodeに比べてクエリが2,3倍遅いことがある
- InnoDB_Adaptive_Hash_Indexesがreader nodeではoffになっているっぽい。
- Auroraの都合っぽいのでパス
- Percona Live Europe 2019 Call for Papers is Now Open!
- タイトル通りPercona Live Europe 2019のTalk sessionの募集開始!!!
- 前回LTの応募出したんだけど、そもそもLT枠なくなってた...
- Stored Functions and Temporary Tables are Not a Good Fit
- Percona XtraDB Cluster 5.7.26-31.37 Is Now Available
- タイトル通り
- 10個のbugsがfixされたようだけど、PXCなのでパス
- InnoDB ALTER TABLE ADD INDEX and INSERT performance
- Percona Live 2019’s Top 10 Most Attended Talks
- Percona Live 2019のセッションの人気トップ10が発表!!
- No1のØysteinの発表をばっちり聞いていたのと、それ以外のコア開発チームの発表は後日動画が公開されそうという予想がバッチリ的中して最高。
- そして動画を公開できないことが理由かもしれないけど、僕はFacebookの発表が1つも上位に入っていないのが不思議。
- FBの発表は聞いてきたから良いけどね!
- pt-kill: How it Works
Oracle-MySQL blog: https://blogs.oracle.com/mysql/
- Nothing
- MySQL道普請: https://gihyo.jp/dev/serial/01/mysql-road-construction-news
- Nothing
- Yakst MySQL-tag: https://yakst.com/ja/tags/mysql
- Nothing
Personal blogs
(リストは不完全です。この人のが抜けてるじゃん!?ってあったら教えてくださいm( )m)
(ただし内容はMySQL関連に限ります)
- Dave stoke-san: https://opensourcedba.wordpress.com/
- lefred-san: https://lefred.be/
- Oystein-san: http://oysteing.blogspot.com/
- okuno-san: http://nippondanji.blogspot.com/
- kimura-san: http://blog.kimuradb.com/
- yoku0825-san: https://yoku0825.blogspot.com/
- sakaik-san: http://sakaik.hateblo.jp/
- tomita-san: https://tmtms.hatenablog.com/
- mita2-san: http://mita2db.blogspot.com/
- sejima-san: https://www.slideshare.net/takanorisejima/
- kenken0807: http://kenken0807.hatenablog.com/
- ichirin2501-san: https://ichirin2501.hatenablog.com
- atsuizo-san: http://atsuizo.hatenadiary.jp/
- kamipo-san: https://blog.kamipo.net/
- hiroi10-san: http://hiroi10.hatenablog.com/
- hmatsu47-san: https://qiita.com/hmatsu47
- tkyk04-san: http://next4us-ti.hatenablog.com/
- ♡♡♡主キー大主キー♡♡♡(MySQL Casual Talks vol.11)
- MySQL Casual Talks vol.11のまとめ記事
- tom__bo: https://tombo2.hatenablog.com/