目次
[さらに読む]
May
15
2022
May
06
2022
May
01
2022
Apr
22
2022
Apr
07
2022
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)
…
[さらに読む]
Mar
30
2022
いつまで経っても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 | …
Mar
25
2022
Mar
20
2022
Mar
15
2022
TL;DR
- 日々の覚書: MySQL Shellのプロンプトをゼロからカスタマイズしてみんとす(classとsegment) の続き
- segmentsの中にclassを置くときになぜか配列型にするけど、それはCOALESCEみたいな感じで「最初に存在したクラスを適用する」みたいな動き
謎だったのだ。パッケージに一緒についてくる /usr/share/mysqlsh/prompt/
あたりに転がっているprompt.jsonのこのへんの記述。
"segments": [
..
{
"classes": ["noschema%schema%", "schema"],
"bg": 242,
"fg": 15,
"shrink": "ellipsize",
"weight": -1,
"padding" : 1
},
..
…
[さらに読む]
Mar
13
2022
前提条件
- 1つのテーブルをdb1からdb2に移動する
- テーブルは数百GB~1桁TB、「メンテに入れてエクスポート」の手が取れないくらいを想定
- またこのテーブルをレプリケーションする手も取れないとする
- テーブルにはauto_incrementなPrimary Key、それとは別にUnique Keyがあるが、Foreign
Keyはないものとする
- FKあるとだいたい外に括り出すわけにいかないし
- テーブルにはINSERTもUPDATEもDELETEも来るが、updated_at的なものはない
まずdb2に、オリジナルのテーブルと同じ空っぽのテーブルを作る。
CREATE TABLE `some_table` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT,
`user_id` int unsigned NOT NULL,
`something_hash` varchar(32) COLLATE …
[さらに読む]