如何获取MySQL中的查询和事务大小

有时候,了解事务的大小很重要。默认情况下,事务的大小是有限的,以保证集群的最佳行为。

首先要将事务分成两种类型:

1.生成数据的事务(写操作,比如insert、delete、update等DML操作)

2.只读的事务(查询操作)

我们需要从binlog文件中检查binlog事件,然后计算它的大小。为了说明这一点,让我们尝试查找由特定GTID标识的事务: 17f6a975-e2b4-11ec-b714-c8cb9e32df8e:7541914​

SQL > \P grep 'Gtid\|COMMIT' ; Pager has been set to 'grep 'Gtid\|COMMIT' ;'. SQL > show BINLOG EVENTS in 'binlog.000064' ; | binlog.000064 | 213 | Gtid | 1 | 298 | SET @@SESSION.GTID_NEXT= '17f6a975-e2b4-11ec-b714-c8cb9e32df8e:7541914' | | binlog.000064 | 53904723 | Xid | 1 | 53904754 | COMMIT /* xid=75 */ | SQL > \pager Pager has been disabled. SQL > select format_bytes(53904754-213); +----------------------------+ | format_bytes(53904754-213) | +----------------------------+ | 51.41 MiB | +----------------------------+ 1 row in set (0.0005 sec)