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