一、背景
新项目全部都迁移到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
官方文档