この日記は、少し時間が取れるようになった私が自由気ままにMySQLと戯れた結果を、つらつらと書き殴ったものです。明確な目的もなく、ただただMySQLと会話をして(そう、MySQLには「対話モード」があるのですよ)、楽しかったぁ、という日記です:-)
今回は、MySQLのカラムの別名について遊んでみました。特に結論はなく、こういう動きをするのかぁという読み物として見ていただければと思います。原理や内部構造の追加解説は歓迎します。
準備と基本事項の確認
…
[さらに読む]TL;DR
NO_UNSIGNED_SUBTRACTION を追加してから実行する
たとえば、
performance_schema.events_statements_summary_by_digest
の結果を延々とため込んでいるようなテーブルがあるとするじゃろ? sum_rows_examined
は累計値なので、グラフにする時なぞは前回との差分を取りたくなるので、MySQL 8.0からようやく使えるようになった
LAG なぞ使うではないか。
mysql> WITH base AS
-> (
-> SELECT
-> digest,
-> sum_rows_examined - LAG(sum_rows_examined) OVER w AS diff_exam,
-> last_update,
-> …[さらに読む]
TL;DR
INSTALL PLUGIN a SONAME 'b.so' は
plugin_load= a=b.so と書く
; で区切る、
plugin_load=rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so
みたいに
…言いたいことは全部書いてしまった気がするので、ドキュメントを読んでつらつらと。 MySQL :: MySQL 8.0 Reference Manual :: 5.6.1
Installing and Uninstalling Plugins
plugin_load_add は使ったことなかったけど、 ;
で複数区切りを「したくない」時に後ろに書けるらしい。 地味にMySQL 5.6.3の新機能だった らしい。知らなかった。 …
お題
information_schema.tables の
INDEX_LENGTH では合計容量しか見えない
mysql> SELECT TABLE_NAME, TABLE_ROWS, DATA_LENGTH, INDEX_LENGTH
FROM information_schema.tables WHERE TABLE_NAME = 'sbtest1' \G
*************************** 1. row ***************************
TABLE_NAME< TABLE_ROWS: 1
DATA_LENGTH: 225132544
INDEX_LENGTH: 85295104
1 row in set, 1 warning (0.00 sec)
innodb_index_stats テーブルを見る
v5.6 で試しています。innodb_index_stats テーブル …
TL;DR
mysql.user.User_attributes
カラムにJSONで入ってくるのでその辺で確認できる
SHOW CREATE USER には入ってこないのでここで確認するしかない?
mysql.user.user_attributes に
additional_password って要素を持ってるかどうかで判定ができる
mysql80 7> SELECT user, host FROM mysql.user WHERE user_attributes->>'$.additional_password' IS NOT NULL;
+----------+------+
| user | host |
+----------+------+
| yoku0825 | % |
+----------+------+
1 row in set (0.00 sec)
…
[さらに読む]
MySQL&Dockers ...は新しい概念ではなく、人々はしばらくの間Dockersに移行しています。
開発のためにこれに移行しようとしている人にとっては、いくつかのハードルがあります。
MySQLはローカルで正常に動作しますが、MySQLの異なるバージョン間でコードをテストする場合は、いくつかのバージョンを簡単に入手できると便利です。
長年の選択肢の1つは、もちろんGiuseppe Maxiaによるhttps://mysqlsandbox.net/です。
これは、複数のインスタンスを起動し、レプリケーションなどをテストできる非常に有効なソリューションです。
…
日々の覚書: シングルプライマリーモードだろうとInnoDB Cluster内のデータをズラす方法
の続き。 件数をズラした上で OPTIMIZE TABLE
をかけるといくらでもセカンダリーが遅延した状況が作り出せる、というとことまでは良いとして。
node3のグループレプリケーションを一旦止める。
### node3
mysql> STOP GROUP_REPLICATION;
Query OK, 0 rows affected (4.49 sec)
またnode1から OPTIMIZE TABLE を5発くらい叩き込んでついでに更新SQLを入れておく。
### node1
mysql> OPTIMIZE TABLE sbtest.sbtest1; -- これを5回くらい
mysql> INSERT INTO d1.t1 VALUES (4, 'four');
Query OK, 1 row affected (0.01 sec)
mysql> SELECT * FROM d1.t1; …[さらに読む]