一、背景

新项目全部都迁移到TiDB,在初始化数据的时候使用insert into ... select ...,报了Transaction too large, size: 104857610异常

二、解决方法

设置在配置文件加上​​txn-total-size-limit​​大小限制,我这边设置成1G,然后重启TiDB

官方对于这个参数的说明:

分布式事务要做两阶段提交,而且底层还需要做 Raft 复制。如果一个事务非常大,提交过程会非常慢,事务写冲突概率会增加,而且事务失败后回滚会导致不必要的性能开销。所以我们设置了 key-value entry 的总大小默认不超过 100MB。如果业务需要使用大事务,可以修改配置文件中的 txn-total-size-limit 配置项进行调整,最大可以修改到 10G。实际的大小限制还受机器的物理内存影响。

长时间占用内存,还容易发生OOM

​官方文档​