请问tidb 最大sql语句长度有没有限制?

为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:
【 TiDB 使用环境】v5.0.0

【概述】 场景 + 问题概述
请问tidb 最大sql语句长度有没有限制?例如select * from xxx where name in(…), 这条语句最大可以夺长?有没有系统变量设置?谢谢!
【应用框架及开发适配业务逻辑】

【背景】 做过哪些操作

【现象】 业务和数据库现象

【问题】 当前遇到的问题

【业务影响】

【TiDB 版本】

【附件】 相关日志及监控(https://metricstool.pingcap.com/)


若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。

1赞

看看是这个么

max-sql-length

max-sql-length

不是,这个变量控制 statement summary 显示的 SQL 字符串长度

我这边有遇到过in uuid的查询个数大概2000个,没有报错。

目前官方上好像没有这方面的描述,你可以手动写一下测试测试。

in 太多会导致不走索引哟,老铁。

1赞

以前试过in 3000多个会报错,改成3000没报了,想确认下

mysql中 ,in语句中参数个数是不限制的。不过对整段sql语句的长度有了限制
官方解释看这 https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_max_allowed_packet
报文大小限制默认4M。

在tidb的代码中也有类似的限制:

// Run reads client query and writes query result to client in for loop, if there is a panic during query handling,
// it will be recovered and log the panic error.
// This function returns and the connection is closed if there is an IO error or there is a panic.
func (cc *clientConn) Run(ctx context.Context) {
	const size = 4096

https://github.com/pingcap/tidb/blob/feee7c258ac7799499f561d281434b243c4fc92e/server/conn.go#L1022

2赞

:+1:源代码大佬~

大佬,学习了,oracle也有sql文本长度限制的。。不可能无限制。。。