TiDB如何设置语句级的Timeout配置?

使用SpringBoot + Mybatis方式进行TiDB查询sql,发现无法使用Mybatis的statement-timeout设置来取消超时查询。
进行Statement Timeout设置后,当语句查询超时时,不会取消查询而是等到语句执行完成后,才抛出一个超时异常。
比如设置statement timeout为3秒,然后执行select sleep(10);
使用mysql时,会在3秒时抛出超时异常;
使用TiDB时,会在10秒语句执行完才抛出超时异常;

com.mysql.cj.jdbc.exceptions.MySQLTimeoutException: Statement cancelled due to timeout or client request

2020-07-21 11:32:43.128 ERROR 10840 — [p-nio-80-exec-1] c.c.s.d.s.m.controller.TestController : org.springframework.dao.QueryTimeoutException

ps: 使用jdbc的socket timeout设置似乎可以实现当执行查询超时时,立即断开并抛出异常。但无法做到语句级超时设置。

您好,查看了 tidb 的参数培训文件 https://github.com/pingcap/tidb/blob/v4.0.0-rc.1/config/config.toml.example ,应该没有参数可以达到这个效果。 您说的 statement timeout 参数,我理解由于 tidb 是二阶段的,sql 会下发到各个 tikv 去执行,所以不好控制 sql 级别的超时 kill,当前可能没有这个参数。 如果需要这个功能,建议可以到 https://github.com/pingcap/tidb/issues 提交 issue 来实现功能,多谢。

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