目次
[さらに読む]
TL;DR
-
トランザクション分離レベルがたとえREAD-UNCOMMITTEDだとしても、クエリの実行中はhistory list lengthは伸びていく
-
REPEATABLE-READ .. トランザクション中はundo recordをパージできない
-
READ-COMMITTED, READ-UNCOMMITTED .. クエリの実行中はundo recordをパージできない
-
-
ところで、
mysql_use_result
はSQLの評価が終わった後に結果セットをクライアントに送信するのを遅延させる(サーバーサイドでバッファリングさせる)ので、クライアントが結果セットを全部読みだしてくれるまでは「MySQL上ではクエリ実行中扱い」- というわけで、history list …
前回のブログで、MySQLとPostgreSQLの基本的なロックに関してはまとめたので、ここでは、MySQL8.0から加わっている。SKIP LOCKEDとNOWAITオプションについて追記します。
MySQL8.0 (NOWAIT and SKIP LOCKED)
WL#3597: Implement NOWAIT and SKIP LOCKED
WL#8919: InnoDB: Implement NOWAIT and SKIP LOCKED
これまでの挙動としては、LOCK TIMEOUT待ちが主なレスポンスでした。
LOCK Wait and TimeoutMySQL8.0では、以下オプションが利用可能です。
- for update of <table名> SKIP LOCKED; /*** …
TL;DR
- innochecksumを使って強引に数えてみた
- こんなことをするくらいならおとなしくCOUNT(*) した方がマシ
SHOW TABLE
STATUS
や information_schema.tables
は統計情報ベースなので正確な値ではない、でも COUNT(*)
はしたくない、という時。
mysql> SHOW TABLE STATUS LIKE 't1'\G
*************************** 1. row ***************************
Name: t1
Engine: InnoDB
Version: 10
Row_format: Dynamic
Rows: 94295380
Avg_row_length: 37
Data_length: 3515875328
Max_data_length: 0
Index_length: 3868196864
Data_free: 6291456
Auto_increment: NULL
Create_time: 2022-05-23 21:43:56
Update_time: 2022-05-23 22:43:29
Check_time: NULL
Collation: utf8mb4_bin
Checksum: NULL
Create_options:
Comment:
1 row …
[さらに読む]
TL;DR
-
sysbenchでDROP用のテーブルと、その他トラフィック用のテーブルをprepareして
-
sysbench runしながらDROP TABLEするだけ
sysbenchは無ければインストール(CentOS 7.xだとepelに入ってる)
$ sudo yum install -y sysbench
ベンチ先がMySQL
8.0の場合、 default_authentication_plugin=mysql_native_password
かつ、sysbench用のアカウントがmysql_native_passwordでされてないとエラーになる。
FATAL: error 2059: Authentication plugin 'caching_sha2_password' cannot be loaded: /usr/lib64/mysql/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory
FATAL: `sysbench.cmdline.call_command' function failed: /usr/share/sysbench/oltp_common.lua:83: connection creation failed
…
[さらに読む]やり方があってるかどうかわからないので違ってたら教えてほしい。
サンプルデータこんな感じ。
mysql80 209534> SELECT * FROM t1 LIMIT 3;
+---------------------+-----------+
| dt | rows_read |
+---------------------+-----------+
| 2022-05-31 17:16:00 | 0 |
| 2022-05-31 17:16:01 | 6 |
| 2022-05-31 17:16:03 | 0 |
+---------------------+-----------+
3 rows in set (0.00 sec)
まずは全期間でrows_readの95%ileを計算してみたい。
パーセンタイルを一発で求めるなにかは無さそうなので、まずはおとなしくRANK()で並べ替える。
mysql80 209534> SELECT dt, rows_read, RANK() OVER (ORDER BY rows_read) AS _rank FROM t1;
+---------------------+-----------+-------+
| dt | rows_read | _rank | …
[さらに読む]
MySQLリリースノートでわいわい言う勉強会 8.0.29 開催してました。 書き忘れていたので、後日記録として本エントリを記述しています。 mysql.connpass.comhttps://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8.0.29.html togetter.com