写入一个单行超过100MB的数据后,TIDB几乎挂了

写入一个单行超过100MB的数据后,现象是:TIDB v5.0.1 的TPS降到了个位数,处理时间普遍是1分钟左右。客户端收到Server is Busy的错误。写入大行的程序停了,TIDB也一直无法恢复正常。

我怀疑跟 scheduler-pending-write-threshold写入队列默认大小100MB有关,但就算这样,TIDB不应该一直无法恢复吧,请帮忙解答,谢谢。

有日志信息可以提供出来么?

你好,想了解下是什么业务场景和数据,需要写这么大 value

scheduler-pending-write-threshold 是需要调大一些,另外 txn-entry-size-limitraft-entry-max-size 参数设置多少
https://docs.pingcap.com/zh/tidb/stable/tidb-configuration-file#txn-entry-size-limit-从-v50-版本开始引入

Server is Busy 可以看下 TiKV-Details 监控 Errors 面板具体是哪种类型的报错

目前txn-entry-size-limit设置为20MB, raft-entry-max-size 设置为30MB。

多少行都是6MB以内,但有少数的一些行可能比较大。可能过100MB

这样如果超过 100MB 没有遇到 entry too large 的报错么

可以将 txn-entry-size-limit 和 raft-entry-max-size 分别调到 120MB 和 128MB,同时将 scheduler-pending-write-threshold 调大到 1GB

不知道是什么数据,这么大数据为啥不考虑存为对象到文件或 S3,数据库存个对象地址?

你说的没错,大对象存关系数据库的确不太合适,不过这个是有历史原因的,一时半会还比较难改。