johnwa-CD
(Hacker Yp Yw Bvas)
1
为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:
【 TiDB 使用环境】
5.0.2
【概述】 场景 + 问题概述
提示事务过大
【背景】 做过哪些操作
【现象】 业务和数据库现象
事务过大
【问题】 当前遇到的问题
语句
update FbAd a,FbAdCreative b set a.GroupId = ifnull(b.GroupId,0) where a.AdCreativeId = b.AdCreativeId and a.GroupId = 0;
两个表关联更新,常见操作
desc查看执行计划
Update_6 |
N/A |
root |
|
└─IndexHashJoin_16 |
49991.58 |
root |
|
├─TableReader_49(Build) |
44161.00 |
root |
|
│ └─Selection_48 |
44161.00 |
cop[tikv] |
|
│ └─TableFullScan_47 |
44161.00 |
cop[tikv] |
table:a |
└─IndexLookUp_13(Probe) |
1.13 |
root |
|
├─Selection_12(Build) |
1.13 |
cop[tikv] |
|
│ └─IndexRangeScan_10 |
1.13 |
cop[tikv] |
table:b, index:IX_AdCreativeId(AdCreativeId) |
└─TableRowIDScan_11(Probe) |
1.13 |
cop[tikv] |
table:b |
才四万行记录啊,
select count(1) as ccount from FbAd a left join FbAdCreative b on a.AdCreativeId = b.AdCreativeId
行数:44162
8004 - Transaction is too large, size: 1073791624
【业务影响】
【TiDB 版本】 5.0.2
【应用软件及版本】
【附件】 相关日志及配置信息
- TiUP Cluster Display 信息
- TiUP CLuster Edit config 信息
监控(https://metricstool.pingcap.com/)
- TiDB-Overview Grafana监控
- TiDB Grafana 监控
- TiKV Grafana 监控
- PD Grafana 监控
- 对应模块日志(包含问题前后 1 小时日志)
若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。
2 个赞
在 TiDB 的早期版本中, 一个语句每 20000 行进行一次提交。新版本的 TiDB 默认在一个事务中提交所有行。从 TiDB 4.0 及以前版本升级后,可能出现 ERROR 8004 (HY000) at line 1: Transaction is too large, size: 100000058
错误。
要解决该问题,建议调大 tidb.toml
文件中的 txn-total-size-limit
值。如果无法增加此限制,还可以将 tidb_dml_batch_size
的值设置为 20000
来恢复升级前的行为。
4 个赞
leeray
(Lileiaab)
4
昨天刚刚遇到这个问题,默认事务100M太小了。binlog同步的时候,rpc消息太大直接导致tidb挂掉了。
2 个赞
johnwa-CD
(Hacker Yp Yw Bvas)
5
这个是 2GB啊
update FbAd a,FbAdCreative b set a.GroupId = ifnull(b.GroupId,0) where a.AdCreativeId = b.AdCreativeId and a.GroupId = 0
8004 - Transaction is too large, size: 2147535123
时间: 70.097s
1 个赞
johnwa-CD
(Hacker Yp Yw Bvas)
6
调大 到 2GB还是报错
update FbAd a,FbAdCreative b set a.GroupId = ifnull(b.GroupId,0) where a.AdCreativeId = b.AdCreativeId and a.GroupId = 0
8004 - Transaction is too large, size: 2147535123
时间: 70.097s
1 个赞
johnwa-CD
(Hacker Yp Yw Bvas)
8
我感觉这个很奇怪,这表才四万行.没有 2GB 这么大的数据啊.我就更新个 Id INT类型的
1 个赞
johnwa-CD
(Hacker Yp Yw Bvas)
9
我感觉这个很奇怪,这表才四万行.没有 2GB 这么大的数据啊.我就更新个 Id INT类型的
1 个赞
和条数无关,KV entry 的总大小不超过 建议你继续调大参数试一下
2 个赞
johnwa-CD
(Hacker Yp Yw Bvas)
13
太扯了吧?
这个不是只更新 一个 Id么 ?我已经调大到10G了.依然无法执行…
1 个赞
txn-total-size-limit
修改的这个参数嘛?
这是2G的时候 你修改参数之后 重新reload了吗