MP实战系列(十六)之性能分析插件

性能分析拦截器,用于输出每条 SQL 语句及其执行时间。

虽然使用阿里的Druid连接池可以完成这个目的,但是,我们一般认为,目前的组件能够达到这个目的,尽量使用目前的组件,因为修改配置和引入第三方库是需要消耗性能的。

很久使用我们没有这种便利的开发工具来测试性能, 比如以MySQL为例,我们就使用explain命令来测试性能。

输出每条SQL语句和执行时间的目的,在于,直观看到那些是需要优化的,例如SQL优化,通常除去查询大量数据加索引的情况,一般都是去除不需要获取的字段来达到sql优化的目的。

Spring+SpringMVC+MyBatis-Plus(SSM框架)

只需在mybatis-config.xml配置如下内容即可(这里有效的测试,目前针对于2.0以上和3.0以下,3.0以上没测试过,暂不考虑,我想3.0应该也没问题):

<!-- SQL 执行性能分析,开发环境使用,线上不推荐。 maxTime 指的是 sql 最大执行时长 -->
<plugin interceptor="com.baomidou.mybatisplus.plugins.PerformanceInterceptor">
    <property name="maxTime" value="100" />
    <!--SQL是否格式化 默认false-->
    <property name="format" value="true" />
</plugin>

如果是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。

建议开发环境使用,生产环境不要使用,还是那句话,生产环境加上这个会消耗一定的性能。所以一般开发环境开启,生产环境禁用。

上一篇:移动互联网发展趋势-移动互联网规模超40亿


下一篇:Hibernate之CRUD实践