在做分布式时,分布式大家都知道,数据库和业务层跟Controller 层是分离的,不在同一台机子。
问题:
- 怎么使用 Druid 达到数据源监控的目的,目前我在 Controller 层开启监控,只能监控到 url ,但无法监控 sql 执行,怎么解决?
- 我在 业务层使用 Druid 配置,全部失效,都无法监控到,难道 Druid 是通过监控 MyBatis 注解来实现的吗,在逻辑层做的监控,而不是在数据库上进行监控的吗?
问题:
可以看一下我的回答,其中部分参考自ChatGPT:
针对你的问题1的解答:
在数据库层使用Druid的Filter功能,将SQL语句拦截下来,并用StatFilter来记录SQL执行的时间,慢查询,执行次数等信息。
在业务层使用Druid的DataSourceProxy,可以拦截Connection对象的操作,记录每个链接的创建时间,销毁时间,以及使用时长等信息。
在Controller层使用Druid的WebStatFilter,监控url的访问情况,以及访问时长,页面访问的次数等信息。
通过上述方案,可以有效的实现Druid对分布式环境的数据源监控,从而更好的分析系统的运行状况,提高系统的性能。
针对你的问题2解答:不是在数据库上进行监控的,Druid 可以监控你在业务层使用的数据库操作。它提供了一个高效的 JDBC 监控和管理功能,其中包括用户名、IP、SQL 语句、时间、执行时间等统计信息。它使用一个内置的数据库进行监控,可以通过 SQL 语句进行监控,而不是通过 MyBatis 注解来实现的。