とあるMySQLのデータベースで、性能劣化した疑いのあるプロシージャがありました。
プロシージャには複数のSELECTやINSERTが含まれています。
どのSQLが遅かったか突き止める方法はあるのでしょうか?
プロシージャに含まれている、各SQLはスロークエリログに落ちるんでしょうか?
試してみます。
テスト用に遅いプロシージャを作ります。
ログを出します。
DELIMITER //
CREATE PROCEDURE sample()
BEGIN
SELECT SLEEP(10);
END
//
DELIMITER ;
mysql> SET GLOBAL slow_query_log = ON;
Query OK, 0 rows affected (0.00 sec)
mysql> SET GLOBAL long_query_time = 0;
Query OK, 0 rows affected (0.00 sec)
…
MySQLのBug Report
もう一週間経ったけど、今回出したバグレポートでドキュメントが修正されました。めでたい。
単にドキュメントが修正されただけですが、せっかくなのでMySQLにBug reportするまでの流れを書いておきます。
アカウント登録
シュッと登録します
How to Report a Bugを読む
なにやら説明がありそうなので、読んでおきます。 なにか厳しい規則があるというわけではないので、チェックリスト的にさらっと読んでからレポートを書くと良さそうです。 …
[さらに読む]
あるクエリがperformance_schemaに記録されなかった。
原因を調べていて1つ記録されない条件を見つけたのでメモ。
まず、問題ないパターン。
mysql> SELECT NOW();
+---------------------+
|
NOW()
|
+---------------------+
| 2019-07-30 10:40:47 |
+---------------------+
1 row in set (0.00 sec)
mysql> SELECT SQL_TEXT FROM events_statements_history;
+-------------------------------------------------------------------+
| …
あるクエリがperformance_schemaに記録されなかった。
原因を調べていて1つ記録されない条件を見つけたのでメモ。
まず、問題ないパターン。
mysql> SELECT NOW();
+---------------------+
|
NOW()
|
+---------------------+
| 2019-07-30 10:40:47 |
+---------------------+
1 row in set (0.00 sec)
mysql> SELECT SQL_TEXT
FROM events_statements_history;
+-------------------------------------------------------------------+
| …
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が追加
…
-
TL;DR
- mysqldが 本当に 刺さって動作を停止している時のためのメモです。重いだけの時に使うものじゃない。
- ざっと見る方法であって、解決方法じゃない。
まずは慌てず騒がずエラーログを見る。クラッシュしてるログが出てるならそれはそれでOK。mysqld_safe
とか systemd を使っている場合、 mysqld
が自動再起動されているかも知れない。クラッシュリカバリーの真っ最中はプロセスが浮いていても接続できないので、クラッシュリカバリー中だったら見守る。
OOM Killerに殺された場合はエラーログに何も出ずにsyslogだけ吐くので、
/var/log/messages あたりもチラ見しておくと吉。
特にクラッシュはしていないようであれば、 dstat …
TL;DR
-
日々の覚書: MySQL 8.0.17でついにCloneプラグインが入った で紹介した
CLONE LOCAL DATAは現在のdatadirをローカルのファイルシステムに一貫性のある形でコピーするステートメントだった - これをスレーブになるサーバーに転送してやってももちろん良いんだけど、そこまで一括でやってくれる
CLONE INSTANCE FROMのステートメントも存在する - スレーブ増やすのが捗る
CLONE INSTANCE FROM を使うためには、データのコピー元( ドキュメント 上では …
[さらに読む]TL;DR
-
MySQL 8.0.17 でついに俺待望の Cloneプラグイン が追加された
-
CLONE LOCAL DATA DIRECTORY ..で、ローカルファイルシステムにほぼノンブロッキングで物理バックアップを吐き出す -
CLONE INSTANCE FROM USER@HOST:PORT IDENTIFIED BY 'password' ..でグループレプリケーションの経路を使ってフツーのレプリケーションと同じ3306の経路を使ってインスタンスの丸コピーができるらしい
-
- このへんを読んでおくのが良さげ
- …