目次
[さらに読む]以下のエントリーでは、最近の MySQL の Internal Temporary Table の動作についてまとめました。
条件によっては、領域が ディスク上に確保される場合があり、その場合はパフォーマンスに影響がある可能性があります。 今回はMySQLのステータスから Internal Temporary Table の状況を観測し、チューニングする方法をまとめます。
performance_schema.global_status / SHOW GLOBAL STATUS
mysql> SELECT * FROM performance_schema.global_status WHERE VARIABLE_NAME IN ('Created_tmp_tables', 'Created_tmp_disk_tables') ORDER BY VARIABLE_NAME \G *************************** 1. row *************************** …[さらに読む]
以前、エラーになったクエリがスロークエリログに落ちるかどうか試しました。
このときは文法エラーも含め、エラー時もスロークエリログに記録されてましたが、MySQL 8.0.29, MySQL 5.7.38 で文法エラーは除外するよう挙動が変更されたようです。 改めて、挙動を確認してみます。
MySQL 8.0.29, Statements that cannot be parsed (due, for example, to syntax errors) are no longer written to the slow query log.
実行時間でフィルターされないようlong_query_time=0
を設定して試します。
…[さらに読む]
TL;DR
- 日々の覚書: MySQL標準のEXPLAIN(format=TRADITIONAL)とEXPLAIN format=TREEを並べて見つめてみる で言ってたやつは、過去の記憶(?)だった
t3を含んだサブクエリ (SELECT SUBSTRING(val, 1, 1) AS f,
SUM(num) FROM t3 GROUP BY f) AS tmp_t3
が最初に処理
- 5.6とそれ以降はDelayed Materializationによりt3を含んだサブクエリが最後に実行されていた
- これはEXPLAINだけでは読み切れなさそうな予感
- MySQL :: MySQL 5.6 Release Notes :: Changes in MySQL 5.6.3 (2011-10-03, Milestone 6)
…
[さらに読む]いつまで経ってもformat=TREEに慣れないので、メモしつつ勉強してみる。
-
MySQL :: MySQL 8.0 リファレンスマニュアル :: 13.8.2 EXPLAIN ステートメント
mysql80 8> EXPLAIN SELECT * FROM t1, t2, (SELECT SUBSTRING(val, 1, 1) AS f, SUM(num) FROM t3 GROUP BY f) AS tmp_t3 WHERE t1.num IN (SELECT num FROM t5 WHERE num = (SELECT MAX(num) FROM t4) AND val LIKE '%');
+----+-------------+------------+------------+-------+---------------+------+---------+-------+--------+----------+-------------------------------+
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra | …