请问使用on duplicate key update实时写入效率很低,如何解决?

为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:

【TiDB 版本】
4.07 集群规模16台。每台2个SSD磁盘。512G内存。共32个kv.
【问题描述】
我们需要通过消费多个流来拼一个宽表,消费某一个流填充这个宽表的某几列。在spark中写入mysql,使用on duplicate key update实时写入效率很低,如何解决?如果使用insert into value(xxx),(xxx),(xxx)效率很高。而且使用on duplicate key update也是用的批量提交,增加了rewriteBatchedStatements=true这个参数。但是效率很低。

能否在清晰的描述下当前业务处理的具体流程,期望看到 tidb spark tispark mysql

已经解决了。用的是insert into test.test_all_operation(waybill_no, taking_time)
values (‘YT1’,‘taking_time1111’) , values (‘YT1’,‘taking_time1111’) , values (‘YT1’,‘taking_time1111’) on duplicate key update waybill_no=values(waybill_no); 这种方式。
但是不了解,都是批量提交,values后面跟一个括号方式比多个括号方式慢了十几倍,这个有没有什么解释。

猜测可能是事务写入阶段,将多条sql合并为1个sql,减少了2阶段提交的耗时。将3次减少为1次。这个方便反馈下监控信息吗?方便确认下,多谢。 监控的 over-view,tikv-detail ,tidb 等。