通过mybatis拦截器给sql执行加一个耗时监控

代码没什么内容,直接贴上来吧,其中costTimeUtil可以看我的另一篇博文:java实现一个不带次数变量的加权平均值算法-CSDN博客

@Slf4j
@Intercepts({@Signature(type = StatementHandler.class,method = "query",args = {Statement.class, ResultHandler.class}
), @Signature(type = StatementHandler.class,method = "queryCursor",args = {Statement.class}
), @Signature(type = StatementHandler.class,method = "update",args = {Statement.class}
), @Signature(type = StatementHandler.class,method = "batch",args = {Statement.class}
)})
public class MetricOnDbQueryInterceptor implements Interceptor {private static final String MAPPER_SLOW_SQL_METRIC = "MetricOnDbQueryInterceptor_cost";@Resourceprivate AlertOnTimesOfAverageCostTimeUtil costTimeUtil;@Overridepublic Object intercept(Invocation invocation) throws Throwable {long start = System.currentTimeMillis();try {return invocation.proceed();} finally {String sql = ((StatementHandler) invocation.getTarget()).getBoundSql().getSql();long costTime = System.currentTimeMillis() - start;if (costTimeUtil.shouldDoTheMetricWork(sql, costTime)) {//这里可以做一些监控打点的功能log.warn("it is a slow sql query:{}, costTime:{}", sql, costTime);}}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/653583.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

1Panel CloudFlare证书申请失败的解决方案

在升级1Panel后,使用 CloudFlare DNS验证时,会提示 [*.biliwind.com] [*.biliwind.com] acme: error presenting token: cloudflare: failed to find zone biliwind.com.: ListZonesContext command failed: Invalid request headers (6003) 为解决此问…

系统分析师-21年-论文试题

系统分析师-21年-论文试题 更多软考知识请访问 https://ruankao.blog.csdn.net/ 题目任选其一 摘要字数在400字以内,可以分条叙述,但不允许有图、表、流程图。 正文字数为2000字至300字,文中可以分条叙述,但不要全部用分条叙述…

2023年全球软件开发大会(QCon广州站2023):核心内容与学习收获(附大会核心PPT下载)

在全球化的科技浪潮中,软件开发行业日新月异,持续推动着社会经济的飞速发展。本次峰会以“引领未来,探索无限可能”为主题,聚焦软件开发领域的最新技术、最佳实践和创新思想。来自世界各地的顶级专家、企业领袖和开发者齐聚一堂&a…

防范[myers@airmail.cc].mkp攻击:解密[myers@airmail.cc].mkp勒索病毒的方法

引言: 随着科技的迅猛发展,网络安全问题日益突出,而勒索病毒也成为当前互联网威胁中的一大焦点。其中,[datastorecyberfear.com].mkp [hendersoncock.li].mkp [hudsonLcock.li].mkp[myersairmail.cc].mkp勒索病毒以其强大的加密能…

LeetCode第523题 - 连续的子数组和

题目 给定一个包含非负数的数组和一个目标整数 k,编写一个函数来判断该数组是否含有连续的子数组,其大小至少为 2,总和为 k 的倍数,即总和为 n*k,其中 n 也是一个整数。 示例 1: 输入: [23,2,4,6,7], k 6 输出: True …

什么是防抖和节流?有什么区别?如何实现?

文章目录 一、是什么定义代码实现节流防抖 二、区别三、应用场景 一、是什么 本质上是优化高频率执行代码的一种手段 如:浏览器的 resize、scroll、keypress、mousemove 等事件在触发时,会不断地调用绑定在事件上的回调函数,极大地浪费资源…

gitee 轻量级pr怎么操作

Gitee 轻量级 PR(Gitee Pull Request Lite)是一种无须 Fork 仓库,即可快速向某个特定仓库创建并提交一个合并请求(Pull Request)的功能。只需在 Web 端完成代码贡献,就能一键向开源仓库提出 PR 请求&#x…

与供应商无关的 SOAR 在克服孤立的安全挑战中的作用

孤立安全是指不同的安全工具和流程独立运行,它们之间没有有效的通信或数据共享的情况。这种分散的方法在许多组织中很常见,通常是由于随着时间的推移逐渐采用安全解决方案,每个解决方案都根据其特定功能进行选择,而不考虑整体集成…

大模型-迭代优化文本概括

迭代优化 在编写 Prompt 以使用 LLM 开发应用程序时,首先要有关于要完成的任务的想法,可以尝试编写第一个 Prompt,满足上一章说过的两个原则:清晰明确,并且给系统足够的时间思考。然后运行它并查看结果。如果第一次效…

【hcie-cloud】【23】容器编排【k8s】【Kubernetes常用工作负载、Kubernetes调度器简介、Helm简介、缩略词】【下】

文章目录 单机容器面临的问题、Kubernetes介绍与安装、Kubernetes对象的基本操作、Kubernetes YAML文件编写基础Kubernetes常用工作负载Kubernetes常用工作负载简介创建一个无状态nginx集群无状态工作负载Deployment说明无状态工作负载Deployment常见操作创建一个有状态的MySQL…

04 Redis之命令(Hash型Value命令+List型Value命令+Set型Value命令+有序集合ZSET型Value命令)

3.4 Hash型Value命令 Hash 表就是一个映射表 Map,也是由键-值对构成,为了与整体的 key 进行区分,这里的键称为 field,值称为 value。注意,Redis 的 Hash 表中的 field-value 对均为 String 类型。 3.4.1 hset  格…

第一个hello驱动

Linux驱动程序的分类 字符设备驱动、块设备驱动和网络设备驱动。 Linux驱动程序运行方式 把驱动程序编译进内核里面,这样内核启动后就会自动运行驱动程序了;把驱动程序编译成以.ko为后缀的模块文件,然后在Linux启动后,我们自己…

微信小程序(二十一)css变量-定义页面主题色

注释很详细,直接上代码 上一篇 新增内容: 1.使用css变量 2.消除按钮白块影响 3.修改图标样式 源码: npmTest.json {"navigationStyle": "custom","usingComponents": {//引入vant组件"van-nav-bar"…

Pg分区表配置与实现

数据库加速查询的方法,包括添加索引,调整数据库引擎的参数,将日志目录放单独的磁盘分区等。实际应用中,历史数据会随着时间推移逐渐增多,且重要性逐渐降低,但又不能轻易删除。此时可考虑将该表按某个时间字…

[libwebsockets]lighttpd+libwebsockets支持ws和wss配置方法说明

libwebsockets介绍 libwebsockets是一款轻量级用来开发服务器和客户端的C库。它不仅支持ws,wss还同时支持http与https,可以轻轻松松结合openssl等库来实现ssl加密。 官方参考链接: https://libwebsockets.org/ lighttpd版本 lighttpd/1.4.59 (ssl) - a light and fast w…

Linux多线程——线程池

本章Gitee仓库:线程池、单例模式 文章目录 1. 池化技术简述2. 线程池3. 单例模式3.1 单例模式特点3.2 饿汉方式和懒汉方式3.3 单例模式线程安全 1. 池化技术简述 C中的STL,当空间不够时,会自动扩容,这个并不是我们需要多少&#…

sqli-labs闯关

目录 1.安装靶场2.了解几个sql常用知识2.1联合查询union用法2.2MySQL中的通配符:2.3常用函数2.4数据分组 3.mysql中重要的数据库和表4.开始闯关4.1 Less-14.1.1 首先进行一次常规的注入4.1.2 深入解析 1.安装靶场 1.首先推荐使用github下载靶场源码 https://githu…

Matlab处理excel数据

我们新建个excel文档,用Matlab读取里面的内容,计算和判断里面的计算结果是否正确,并打印到另一个文档当中。 新建文档 新建输入文档,文件名TestExcel 编写脚本 [num,txt] xlsread(TestExcel.xlsx); SNcode num(:,1);%从序号中…

《微信小程序开发从入门到实战》学习九十六

7.2 基础内容组件 7.2.4 progress组件 progress组件的示例代码如下&#xff1a; <progress percent"20" show-info /> 7.3 表单组件 表单组件是用于收集信息的组件。第三章介绍了许多表单组件&#xff0c;包括form、input、textarea、picker、switch、butt…

【数据分析】numpy基础第五天

文章目录 前言Z-Score标准化Z-Score应用示例 Min-Max归一化Min-Max应用示例 总结 前言 第五天是我们的numpy学习计划中的最后一天。 在数据处理和数据分析中&#xff0c;数据预处理是非常重要的一步。我们不可能完全靠肉眼来分析数据&#xff0c;总会有用到各种算法模型的时候…