有事中防护的中间件吗?如程序中有个慢SQL,拖慢数据库,数据库自动对这句SQL熔断

【 TiDB 使用环境】生产环境 /测试/ Poc
【 TiDB 版本】
【复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
【资源配置】
【附件:截图/日志/监控】
有事中防护的中间件吗?如程序中有个慢SQL,拖慢数据库,数据库自动对这句SQL熔断

监控长时间运行的sql,然后kill?

早就想整个存储过程,定时执行,但担心误伤

说的是自动SQL限流功能吧
自动限流主要应用在以下3种场景:

  • 流量问题:出现缓存穿透或异常调用情况,导致某类SQL并发量急剧上升。
  • 数据问题:存在大订单数据的账号,该账号的相关SQL占用大量数据库资源。
  • SQL问题:未创建索引的SQL被大量调用,影响正常业务。

我们业务中也有类似问题,大客户数据处理的时候,拖慢了整个服务,目前就是怕误伤

这种交给中间件或者数据库来做不太合适吧,可能有的业务就是慢呢,业务层面来控制比较合理

不负责的内部消息:有这个想法,可能后面会有类似功能。

MAX_EXECUTION_TIME 这个参数不就是干这个用的吗?

界定好边界就行,就像服务层面的熔断,制定好熔断策略,用户自己控制就行

TiDB oom就能对内存使用过高的SQL进行熔断。

我说的想法是对一类 SQL 进行限流。

这个参数一刀切容易误伤,我觉得可以用hint或者设置session级别的参数让开发在代码里去限制

mysql还可以设置sql级别的,就是使用上有点麻烦了

tidb不支持存储过程!

增加tidbserver接点,专门处理这种慢SQL

是的,我们这边业务跑在mysql上,准备将报表、看板需求跑在Tidb上。