目次
[さらに読む]
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 …[さらに読む]
Mar
10
2022
Feb
28
2022
TL;DR
前回作ったところから。
$ mysqlsh -S /usr/mysql/8.0.28/data/mysql.sock -uroot --database d1
root@150-95-141-50 [d1] (READ_WRITE)>
root@150-95-141-50 [d1] (READ_WRITE)> SHOW TABLES;
SyntaxError: Unexpected identifier
( ゚д゚) そう、何も指定していないのでこれはJavaScriptモードなのである。
メインで使う時はSQLモードなので、「SQLモードの時はこのまま、それ以外のモードの時はなんか出したい」と思う。
$ cat ~/.mysqlsh/prompt.json
{
"variables":
{
…[さらに読む]