目次
[さらに読む]4年ぶりの札幌現地開催 今年4月の東京開催を皮切りに、オープンソースカンファレンスもオフライン開催の動きが戻ってきました。 中止となった2020年は、交通機関や宿のキャンセルにてんやわんやだった記憶があります。キャンセル料なしで全額返ってきたりして、運輸も宿泊も大変だなぁと思っていました。 現時点でのOSCの開催形態は、以前とは異なり「ブース展示をオフラインでやりましょう」という流れになっています。セミナーの部は展示とは別の日にオンラインで開催。ブースでのコミュニケーションにOSCの魅力を感じている私にとってはセミナー併設でない展示のほうが、たくさんの人とお話ができるので嬉しいのですが、集客や…
OPTIMIZE TABLEを実行する代わりに、以下の様にALTER TABLEを実行するケースも多いと思います。
バックグラウンドでどの様に処理しているかを聞かれる事も多いのでこちらにメモしておきます。
alter table sbtest6 engine=InnoDB, ALGORITHM=INPLACE, LOCK=NONE;
OPTIMIZE TABLE中の一時テーブル処理
# stat city_sample1.ibd
File: ‘city_sample1.ibd’
Size: 5272240128 Blocks: 10297376 IO Block: 4096 regular file
Device: 10301h/66305d Inode: 96469157 Links: 1
Access: (0640/-rw-r-----) Uid: ( 995/ mysql) Gid: ( 1001/ mysql)
Access: 2023-04-21 22:33:34.264902911 +0000
Modify: 2023-04-21 23:27:00.503985634 +0000
Change: 2023-04-21 23:27:00.503985634 +0000
Birth: -
# /usr/local/mysql/bin/mysql -u root -p -e "optimize table shell.city_sample1"
Enter password: …
[さらに読む]
Analyze Tableがレプリケートされない様にNO_WRITE_TO_BINLOGオプションを付けた場合の
バイナリーログの確認。殆どのケースで参照側でAnalyzeが実行されても問題は無いと思うが、
サンプリングのオーバーヘッドが無い訳ではないので、念のためのオプションとして。
By default, the server writes ANALYZE TABLE statements to the binary log so that they replicate to replicas. To suppress logging, specify the optional NO_WRITE_TO_BINLOG keyword or its alias LOCAL.
13.7.3.1 ANALYZE TABLE Statement
マスターログの確認
mysql> show master status;
+----------------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | …
[さらに読む]
TL;DR
- ちょっと試してみただけなのでフツーに使うことはまずない。自分ですら使おうと思っていない。
パッチはこれだけ。
$ diff ./sql/sys_vars.cc.orig ./sql/sys_vars.cc
5196a5197,5204
> // NO_CMD_LINE - different name of the option
> static Sys_var_transaction_isolation Sys_tx_isolation(
> "tx_isolation", "Default transaction isolation level."
> "This variable is deprecated and will be removed in a future release.",
> UNTRACKED_DEFAULT SESSION_VAR(transaction_isolation), NO_CMD_LINE,
> tx_isolation_names, DEFAULT(ISO_REPEATABLE_READ), NO_MUTEX_GUARD,
> NOT_IN_BINLOG, ON_CHECK(check_transaction_isolation));
>
両方使える ( tx_isolation
がdeprecatedで
transaction_isolation
が推奨 ) MySQL 5.7.42の記述はこんな感じ。
…
[さらに読む]TL;DR
- TIMESTAMPDIFF を使う
- 知ってたはずなのにやらかしたので自戒を込めてメモ
mysql80 65> CREATE TABLE t11 (dt DATETIME);
Query OK, 0 rows affected (0.14 sec)
mysql80 65> INSERT INTO t11 VALUES (NOW());
Query OK, 1 row affected (0.05 sec)
mysql80 65> SELECT * FROM t11;
+---------------------+
| dt |
+---------------------+
| 2023-05-04 06:23:00 |
+---------------------+
1 row in set (0.01 sec)
この時刻との差が(整数の)秒が欲しいからと言って、
mysql80 65> SELECT NOW(), dt, NOW() - dt FROM t11;
+---------------------+---------------------+------------+
| NOW() | dt | NOW() - dt |
+---------------------+---------------------+------------+
| 2023-05-04 …
[さらに読む]
地味にgrepから始める。
$ grep -r 'utf8mb4_0900_ai_ci' | grep -v mysql-test | grep -v scripts/fill_help_tables.sql | grep -v gunit
client/mysqltest.cc: &my_charset_utf8mb4_0900_ai_ci; /* Default charset */
cmake/character_sets.cmake: SET(DEFAULT_COLLATION "utf8mb4_0900_ai_ci")
include/m_ctype.h:extern MYSQL_PLUGIN_IMPORT CHARSET_INFO my_charset_utf8mb4_0900_ai_ci;
man/myisamchk.1:Character set: utf8mb4_0900_ai_ci (255)
mysys/charset-def.cc:extern CHARSET_INFO my_charset_utf8mb4_0900_ai_ci;
mysys/charset-def.cc: add_compiled_collation(&my_charset_utf8mb4_0900_ai_ci);
plugin/x/src/mysql_variables.cc: return &my_charset_utf8mb4_0900_ai_ci;
router/src/routing/src/sql_lexer.cc: if (underscore_cs == &my_charset_utf8mb4_0900_ai_ci) {
router/src/routing/src/sql_lexer_thd.h: &my_charset_utf8mb4_0900_ai_ci};
share/messages_to_clients.txt: eng "Invalid default collation %s: utf8mb4_0900_ai_ci or utf8mb4_general_ci …
[さらに読む]
もしMySQLにおいてROLLBACK処理が発生したら?どのくらい時間がかかるか確認する為の指標。
START TRANSACTIONまたはBEGINでを使用すると、トランザクションを COMMIT または ROLLBACK で終了するまでは、自動コミットは無効のままになるので、以下の様に明示的にトランザクション内で処理を実行して、該当プロセスをKillコマンドでCOMMIT前に停止しました。当然ながらROLLBACK処理が実行されるのですが、大量にデータを扱っている場合にどれだけ時間がかかるか不安な場合もあるかと思います。全てのケースで確認した訳ではないですが、以下の様にINFORMATION_SCHEMA.INNODB_TRXテーブル内のtrx_rows_modifiedを確認する事でおおよその目途を付ける事が可能です。
1.テスト用の処理を実行
2. …
[さらに読む]