MP实战系列(十六)之性能分析插件
性能分析拦截器,用于输出每条 SQL 语句及其执行时间。
虽然使用阿里的Druid连接池可以完成这个目的,但是,我们一般认为,目前的组件能够达到这个目的,尽量使用目前的组件,因为修改配置和引入第三方库是需要消耗性能的。
很久使用我们没有这种便利的开发工具来测试性能, 比如以MySQL为例,我们就使用explain命令来测试性能。
输出每条SQL语句和执行时间的目的,在于,直观看到那些是需要优化的,例如SQL优化,通常除去查询大量数据加索引的情况,一般都是去除不需要获取的字段来达到sql优化的目的。
Spring+SpringMVC+MyBatis-Plus(SSM框架)
只需在mybatis-config.xml配置如下内容即可(这里有效的测试,目前针对于2.0以上和3.0以下,3.0以上没测试过,暂不考虑,我想3.0应该也没问题):
<plugins>
<!-- SQL 执行性能分析,开发环境使用,线上不推荐。 maxTime 指的是 sql 最大执行时长 -->
<plugin interceptor="com.baomidou.mybatisplus.plugins.PerformanceInterceptor">
<property name="maxTime" value="100" />
<!--SQL是否格式化 默认false-->
<property name="format" value="true" />
</plugin>
</plugins>
如果是SpringBoot的话,增加如下内容即可:
@EnableTransactionManagement
@Configuration
@MapperScan("com.blog.service.*.mapper*")
public class MybatisPlusConfig { /**
* SQL执行效率插件
*/
@Bean
@Profile({"dev","test"})// 设置 dev test 环境开启
public PerformanceInterceptor performanceInterceptor() {
return new PerformanceInterceptor();
}
}
注意事项:
- 参数:maxTime SQL 执行最大时长,超过自动停止运行,有助于发现问题。
- 参数:format SQL SQL是否格式化,默认false。
建议开发环境使用,生产环境不要使用,还是那句话,生产环境加上这个会消耗一定的性能。所以一般开发环境开启,生产环境禁用。
MP实战系列(十六)之性能分析插件的更多相关文章
- MP实战系列(十五)之执行分析插件
SQL 执行分析拦截器[ 目前只支持 MYSQL-5.6.3 以上版本 ],作用是分析 处理 DELETE UPDATE 语句, 防止小白或者恶意 delete update 全表操作! 这里我引用M ...
- MP实战系列(十四)之分页使用
MyBatis Plus的分页,有插件式的,也有其自带了,插件需要配置,说麻烦也不是特别麻烦,不过觉得现有的MyBatis Plus足以解决,就懒得配置插件了. MyBatis Plus的资料不算是太 ...
- MP实战系列(十二)之封装方法详解(续二)
继续MP实战系列(十一)之封装方法详解(续一)这篇文章之后. 此次要讲的是关于查询. 查询是用的比较多的,查询很重要,好的查询,加上索引如鱼得水,不好的查询加再多索引也是无济于事. 1.selectB ...
- MP实战系列(十)之SpringMVC集成SpringFox+Swagger2
该示例基于之前的实战系列,如果公司框架是使用JDK7以上及其Spring+MyBatis+SpringMVC/Spring+MyBatis Plus+SpringMVC可直接参考该实例. 不过建议最好 ...
- MP实战系列(十八)之XML文件热加载
你还在为每次修改XML文件中的SQL重新启动服务器或者是等待几分钟而烦恼吗? 配置了热加载即可解决你的这个问题. 这就是XML文件热加载的目的,减少等待时间成本,提高开发效率. SSM框架配置(Spr ...
- MP实战系列(十九)之批量新增
批量操作在实际开发中也应用非常多,例如批量下发优惠券.批量添加用户等. 以MyBatis为例,通常实现批量操作,有这么几种方式? 第一,单条插入sql语句,进行for循环遍历,基准条件是根据前端传过的 ...
- S3C2416裸机开发系列十六_sd卡驱动实现
S3C2416裸机开发系列十六 sd卡驱动实现 象棋小子 1048272975 SD卡(Secure Digital Memory Card)具有体积小.容量大.传输数据快.可插拔.安全性好等长 ...
- MP实战系列(七)之集成springboot
springboot是现在比较流行的微服使用的框架,springboot本质上就是将spring+springmvc+mybatis零配置化,基本上springboot的默认配置符合我们的开发.当然有 ...
- MP实战系列(二)之集成swagger
其实与spring+springmvc+mybatis集成swagger没什么区别,只是之前写的太不好了,所以这次决定详细写. 提到swagger不得不提rest,rest是一种架构风格,里面有对不同 ...
随机推荐
- Random类的常用方法
1.nextBoolean(): 随机返回true或false 2.nextInt(int bound): 随机返回0到bound之间的整数(不包括bound) 如:nextInt(10)返回0-9之 ...
- HDU6197
array array array Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- JSON: jasckson 字段 过滤
有这样一个场景存在一个model类如果User,这里省略了getter/setter方法 class User { String name; String uuid; Long created; Lo ...
- JS 闭包 p5
终于到闭包了,写了一晚上,好激动: 首先闭包,个人是这样理解的(比较好记):闭包是一种能力,是一种可以访问内部函数作用域的能力或者说是一种行使权力,一旦你拥有这个能力,你将可以访问内部函数的作用域.
- 撩课-Web大前端每天5道面试题-Day1
1. var的变量提升的底层原理是什么? JS引擎的工作方式是: 1) 先解析代码,获取所有被声明的变量: 2)然后在运行.也就是说分为预处理和执行两个阶段. 变量提升:所有变量的声明语句都会被提升到 ...
- mongodb与mysql区别(超详细)
MySQL是关系型数据库. 优势: 在不同的引擎上有不同 的存储方式. 查询语句是使用传统的sql语句,拥有较为成熟的体系,成熟度很高. 开源数据库的份额在不断增加,mysql的份额页在持续增长. 缺 ...
- 微信公众号获取acess_token并存储(php)
<?php define("appid", "你的appid"); define("appsecret", "你的appse ...
- Glusterfs的常用命令
1 服务器节点 # gluster peer status //查看所有节点信息,显示时不包括本节点 # gluster peer probe N ...
- 网络基础 HTTP协议之缓存简介
HTTP协议之缓存简介 by:授客 QQ:1033553122 用浏览器查看缓存 IE为例,Tools->Internet options -> View files,如图 点击图示的Vi ...
- Android实用代码
1.展开.收起状态栏 public static final void collapseStatusBar(Context ctx) { Object sbservice = ...