批量更新67w表记录时,系统提示Transaction is too large, size: 104857600,该如何处理?

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

  • 【TiDB 版本】:v4.0.8
  • 【问题描述】:批量更新67w记录表信息时,提示错误信息 8004,Transaction is too large, size: 104857600
    请问该如何处理?生产环境,急

UPDATE tbl_kol SET social_links = CONCAT(’{"’, platform, ‘": "’, home_link, ‘"}’) WHERE social_links IS NULL

8004 - Transaction is too large, size: 104857600
时间: 1.907s

可以参考 [FAQ] tidb 导入大量数据提示 8004 - Transaction is too large, size: xxx
修改参数 txn-total-size-limit

enable-batch-dml --> true (tikv, 需要滚动重启tikv)
tidb_batch_insert --> 1 (tidb,直接修改)
update  -->  insert into select from..

4.0 版本建议改 txn-total-size-limit 配置参数

通过修改txn-total-size-limit参数问题已经解决了,感谢大家

下次遇到更大的事务,可以尝试我提的方案;我之前有个case将txn-total-size-limit给40GB还不行。

好的,下次尝试下,感谢

:+1:

tidb 3.0怎么办呢?

在 4.0 之前版本,如果执行几十万条数据的插入或复制操作,需要用特殊方法来才绕过事务限制,比如开启 tidb_batch_insert 等,但是这些操作是受限且不安全的,未来版本中会被逐渐废弃掉。而在新版本中,可以直接通过大事务支持的特性,来解决老版本中事务限制的问题。

:smiley::call_me_hand:

:smiley::call_me_hand:

:+1::+1::+1:

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。