数据写入报错,超出最大单条数据存储限制,如何优化及调整

【 TiDB 使用环境】生产环境 /测试/ Poc
【 TiDB 版本】V7.1
【遇到的问题:问题现象及影响】业务数据写入tidb数据库,单条数据大小超过6M,报错,无法写入,官方说是需要修改参数,请问如何操作及会额外带来哪些问题,比如性能,资源使用等
【附件:截图/日志/监控】

https://docs.pingcap.com/zh/tidb/stable/tidb-configuration-file#txn-entry-size-limit-从-v4010-和-v500-版本开始引入

txn-entry-size-limit 从 v4.0.10 和 v5.0.0 版本开始引入

  • TiDB 单行数据的大小限制
  • 默认值:6291456
  • 单位:Byte
  • 事务中单个 key-value 记录的大小限制。若超出该限制,TiDB 将会返回 entry too large 错误。该配置项的最大值不超过 125829120(表示 120MB)。
  • 从 v7.6.0 开始,你可以使用 tidb_txn_entry_size_limit 系统变量动态修改该配置项的值。
  • 注意,TiKV 有类似的限制。若单个写入请求的数据量大小超出 raft-entry-max-size,默认为 8MB,TiKV 会拒绝处理该请求。当表的一行记录较大时,需要同时修改这两个配置。
  • max_allowed_packet (MySQL 协议的最大数据包大小) 的默认值为 67108864(64 MiB)。如果一行记录的大小超过 max_allowed_packet,该行记录会被截断。
  • txn-total-size-limit(TiDB 单个事务大小限制)的默认值为 100 MiB。如果将 txn-entry-size-limit 的值设置为 100 MiB 以上,需要相应地调大 txn-total-size-limit 的值。

文档的介绍是比较完善的。

2 个赞

看过这些文档说明,想问下如何操作,加到tidb的拓扑文件重启集群?除了该方法,是否可以直接修改集群的全局变量?

这几个我查了下都不能在线修改。可以在线修改的可以查看下面这个文档。

https://docs.pingcap.com/zh/tidb/stable/dynamic-config#在线修改集群配置

意思是只能通过修改配置文件重启吗

1 个赞

对,是这个意思。

只能修改后重启了。

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