如何快速知道各个慢 sql 的来源

问题:
现在一个部门内的多个组都在用同一个 tidb 集群,当通过 dashboard 发现慢 sql 时,不太好排查慢 sql 是由哪个组的同事/哪个程序执行的。
这种情况一般是通过什么方案来解决的呢?

现在的做法是每个组一个 user ,然后就看这个慢 sql 是由哪个 user 执行的。但是感觉还是不太方便,没办法很快速的知道是哪个服务执行的这个慢 sql

dashboard慢sql页面找找ip 慢sql日志里也有

因为用 haproxy 做了 负载均衡的代理,所以这个 ip 都是同一个 ip

可以配置HAProxy透传,但是配置好了之后就不能直连tidb节点了,这个要注意。
参考这个文章

明天试一下这个

感觉还是根据用户名来区分最直接,可以给用户名加上业务前缀表示不同的服务

还有一种方法,业务在自己的sql上增加自己专属的注释。这样就知道具体是哪个业务了。

我觉得也是用不同用户比较方便,直接。

额,如果知道业务的话,直接从sql内容不是能很容易知道是哪类业务吗?我一般都是直接基于业务内容问的。。。当然,最好是先想办法给他优化好sql,然后带着优化好的sql找他说,你看,你的这个sql这样写会更好,更快,一般没人会不承认吧?

感觉这个更好一点,能很快知道是哪个服务,但是这个加上专属的注释,这个不知道要怎么统一管理

为啥不用SLB,这样就可以知道那个IP连过来的

感觉光知道哪个 IP 连过来的还不够,可能会存在一台机器上有多个服务。

最后打算这么搞:给每个服务分配一个唯一标识,每个服务执行 sql 的时候,通过某个中间件自动给 sql 加上注释,这个注释就是之前分配的唯一标识,这样发现慢 sql 的时候就可以很快知道是哪个服务执行的。

是的加注释是一个聪明的方法

除了上面童鞋提到的使用user,还可以不同的应用使用不同的db,可以从table_schema就可以看到对应的db是不同的。

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