天天看點

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。
           

建議開發環境使用,生産環境不要使用,還是那句話,生産環境加上這個會消耗一定的性能。是以一般開發環境開啟,生産環境禁用。