性能分析攔截器,用于輸出每條 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。
建議開發環境使用,生産環境不要使用,還是那句話,生産環境加上這個會消耗一定的性能。是以一般開發環境開啟,生産環境禁用。