oblogproxy 关于多行数据传输的问题

【 使用环境 】生产环境 or 测试环境

【 OB or 其他组件 】
【 使用版本 】
oblogproxy V2.0.1
【问题描述】清晰明确描述问题

CREATE TABLE t1(id int, idd int);
insert into t1 values(3,1),(4,1),(5,1);

oblogrpoxy代码分析
cdc拉取每条数据为一个record,并放入队列

 int ret = _obcdc->fetch(record, _s_config.read_timeout_us.val());
_queue.offer(record, _s_config.read_timeout_us.val()

转为binlog,接收队列的结果,并处理,在这里(3,1)会生成table_event和write_event,(4,1)会生成table_event和write_event,(5,1)会生成table_event和write_event

//取结果
(!_rqueue.poll(records, _s_config.read_timeout_us.val()) || records.empty())
做转换
for (ILogRecord* record : records) {
 case EINSERT:
        // WRITE_ROWS_EVENT
        if (_filter) {
          break;
        }
        convert_table_map_event(record);
        convert_write_rows_event(record);
        break;
}

疑问对于该sql

insert into t1 values(3,1),(4,1),(5,1);

会生成如下binlog

#240307  2:57:45 server id 100  end_log_pos 305         Table_map: `db5`.`t1` mapped to number 402
# at 305
#240307  2:57:45 server id 100  end_log_pos 345         Write_rows: table id 402 flags: STMT_END_F
### INSERT INTO `db5`.`t1`
### SET
###   @1=3 /* INT meta=0 nullable=1 is_null=0 */
###   @2=1 /* INT meta=0 nullable=1 is_null=0 */
# at 345
#240307  2:57:45 server id 100  end_log_pos 386         Table_map: `db5`.`t1` mapped to number 402
# at 386
#240307  2:57:45 server id 100  end_log_pos 426         Write_rows: table id 402 flags: STMT_END_F
### INSERT INTO `db5`.`t1`
### SET
###   @1=4 /* INT meta=0 nullable=1 is_null=0 */
###   @2=1 /* INT meta=0 nullable=1 is_null=0 */
# at 426
#240307  2:57:45 server id 100  end_log_pos 467         Table_map: `db5`.`t1` mapped to number 402
# at 467
#240307  2:57:45 server id 100  end_log_pos 507         Write_rows: table id 402 flags: STMT_END_F
### INSERT INTO `db5`.`t1`
### SET
###   @1=5 /* INT meta=0 nullable=1 is_null=0 */
###   @2=1 /* INT meta=0 nullable=1 is_null=0 */
# at 507
#240307  2:57:45 server id 100  end_log_pos 534         Xid = 2
COMMIT/*!*/;

是否有方式可以按照如下生成

#240307  2:35:16 server id 188  end_log_pos 553 CRC32 0xe63a413e         Table_map: `db5`.`t1` mapped to number 109
# at 553
#240307  2:35:16 server id 188  end_log_pos 615 CRC32 0x7afaec26         Write_rows: table id 109 flags: STMT_END_F
### INSERT INTO `db5`.`t1`
### SET
###   @1=3 /* INT meta=0 nullable=1 is_null=0 */
###   @2=1 /* INT meta=0 nullable=1 is_null=0 */
### INSERT INTO `db5`.`t1`
### SET
###   @1=4 /* INT meta=0 nullable=1 is_null=0 */
###   @2=1 /* INT meta=0 nullable=1 is_null=0 */
### INSERT INTO `db5`.`t1`
### SET
###   @1=5 /* INT meta=0 nullable=1 is_null=0 */
###   @2=1 /* INT meta=0 nullable=1 is_null=0 */
# at 615
#240307  2:35:16 server id 188  end_log_pos 646 CRC32 0x42a8da66         Xid = 74
COMMIT/*!*/;

看上去是想合并若干 event 事件,来减少数据量?这个需要细化下 mysql binlog 的行为是否也能做到这种场景,听起来是不错的提议,能再详细说下诉求的背景么?

因为mysql binlog原生的行为就是下边那种,如果一条insert/update/delete修改了多行数据,在binlog中是多行记录保存在一个event中的

mysql中类似语句insert into t1 values(3,1),(4,1),(5,1);为下面生成的binlog模式,
mysql中类似语句begin:insert into t1 values(3,1)insert into t1 values(4,1)insert into t1 values(5,1)commit,则为上面生成的binlog模式。
背景
主要是看到没合并的时候,网络发送的包比较多,可能会影响性能