77.MySQL中如何查看一个事务的大小

比如要查看:SET @@SESSION.GTID_NEXT= '43e4cdae-2fa1-11ee-9049-000c29318629:2886' 这个事务的大小,可以通过binbog日志进行查看

复制代码
root@mysqldb 20:40:  [(none)]> pager grep 'Gtid\|COMMIT';
PAGER set to 'grep 'Gtid\|COMMIT''
root@mysqldb 20:46:  [(none)]> show binlog events in 'mybinlog.000030';
| mybinlog.000030 |      196 | Gtid           |   1463306 |         275 | SET @@SESSION.GTID_NEXT= '43e4cdae-2fa1-11ee-9049-000c29318629:2885' |
| mybinlog.000030 |      496 | Xid            |   1463306 |         527 | COMMIT /* xid=25 */                                                  |
| mybinlog.000030 |      527 | Gtid           |   1463306 |         606 | SET @@SESSION.GTID_NEXT= '43e4cdae-2fa1-11ee-9049-000c29318629:2886' |
| mybinlog.000030 |      827 | Xid            |   1463306 |         858 | COMMIT /* xid=27 */                                                  |
| mybinlog.000030 |      858 | Gtid           |   1463306 |         943 | SET @@SESSION.GTID_NEXT= '43e4cdae-2fa1-11ee-9049-000c29318629:2887' |
| mybinlog.000030 | 32926813 | Xid            |   1463306 |    32926844 | COMMIT /* xid=36 */                                                  |
4029 rows in set (0.07 sec)
复制代码

可以看到这个事务大小有31M

root@mysqldb 20:55:  [(none)]> pager
Default pager wasn't set, using stdout.
root@mysqldb 20:55:  [(none)]> select format_bytes(32926813 - 858);
+-----------------------------+
| format_bytes(32926813 - 858) |
+-----------------------------+
| 31.40 MiB                   |
+-----------------------------+

这样就计算出了binlog event的大小。但是这种这种方式还是很麻烦,尤其是想要找出某个事物的大小,可能需要查看多个binlog日志文件。

这里可以采用performance_schema中binary_log_transaction_compression_stats获得有关事务大小的信息。

 select format_bytes(UNCOMPRESSED_BYTES_COUNTER/TRANSACTION_COUNTER) size,format_bytes(COMPRESSED_BYTES_COUNTER/TRANSACTION_COUNTER) compressed,TRANSACTION_COUNTER from performance_schema.binary_log_transaction_compression_stats;
+-----------+------------+---------------------+
| size      | compressed | TRANSACTION_COUNTER |
+-----------+------------+---------------------+
| 20.81 MiB | 20.81 MiB  |                   1 |

注意:要查看sql语句的大小,一定要把这个表先清空,然后再执行sql语句,最后再用这条sql语句进行查看这条事务的大小

truncate table performance_schema.binary_log_transaction_compression_stats;

此外还可以使用MySQL shell plugin列出binlog中binlog事件大小。

复制代码
 MySQL  db04:33060+ ssl  JS > check.showTrxSizeSort()
Transactions in binary log mybinlog.000030 orderer by size (limit 10):
31 mb - 43e4cdae-2fa1-11ee-9049-000c29318629:2887
252 bytes - 43e4cdae-2fa1-11ee-9049-000c29318629:2886
252 bytes - 43e4cdae-2fa1-11ee-9049-000c29318629:2885
20 mb - 43e4cdae-2fa1-11ee-9049-000c29318629:2888
20 mb - 43e4cdae-2fa1-11ee-9049-000c29318629:2892
20 mb - 43e4cdae-2fa1-11ee-9049-000c29318629:2890
20 mb - 43e4cdae-2fa1-11ee-9049-000c29318629:2891
20 mb - 43e4cdae-2fa1-11ee-9049-000c29318629:2889
复制代码

MySQL shell Plugin的下载地址:

https://github.com/lefred/mysqlshell-plugins/wiki/check#showtrxsizesort

 

posted on   太白金星有点烦  阅读(175)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
历史上的今天:
2022-08-26 43.一条语句在oracle中是怎样执行的呢?
2022-08-26 42.oracle rac集群中的目录属性被修改?
2021-08-26 13.安装上传和下载文件
2021-08-26 12.yum install 和yum localinstall区别

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示