【TiDB 使用环境】生产环境
【TiDB 版本】V6.5.10
【操作系统】欧拉22.03 SP3
【部署方式】物理机/5台256G 32核
【集群数据量】3T
【集群节点数】5
【问题复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】复杂sql执行完后,jdbc关闭连接后,sql无法自动释放,通过kill sql也无法停止sql,只能重启程序或者将tidb节点重启才能释放,有没有啥办法可以强制停掉指定sql的
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【复制黏贴 ERROR 报错的日志】
【其他附件:截图/日志/监控】
一般默认开启global kill的情况,如果kill 不掉Query,大概率是bug
可以尝试先去对应tidb server上kill tidb session_id
也尝试过用kill id去操作,停不掉
先检查有没有开启global kill吧,如果没开启,只能终止当前连接的sql,不能终止其他连接的sql
https://docs.pingcap.com/zh/tidb/v6.5/sql-statement-kill/#mysql-兼容性
集群是新部署的,应该是默认开启的吧
我们没有显示的配置enable-global-kill参数
这个版本的global kill都是默认开启的 可以把plan ,log上传上来 看看是哪个bug
PLAN是指执行计划吗,log是tidb.log还是哪些
plan是指执行计划和tidb.log
好的我收集一下
遇到复杂SQL执行后无法释放的问题时,建议首先通过KILL TIDB SESSION强制终止会话,同时优化SQL执行计划并调整TiDB超时参数(如tidb_max_query_time),长期可通过监控慢查询和连接池配置避免类似情况,并定期分析执行计划以提升效率。
连接已经假死了,kill不掉的,只能通过重启tidb_server来释放了,这个SQL不占用系统资源了吧。
上传了,麻烦方便的时候看看
试过的kill语句可以执行成功,但是实际不会结束
先确认问题SQL的ID,SELECT * FROM information_schema.processlist WHERE state != ‘idle’;
我们遇到过,tidb本身问题,目前只能通过重启消除,官方说不消耗资源,但是放这里也不放心,找个业务时间点重启那个节点就行了
在TiDB中,你可以使用 KILL TIDB QUERY 来终止正在运行的查询。