Druid 配置_StatFilter
Druid內置提供一個StatFilter,用于統計監控信息。
1. 別名配置
StatFilter的別名是stat,這個別名映射配置信息保存在druid-xxx.jar!/META-INF/druid-filter.properties。
在spring中使用別名配置方式如下:
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">... ...<property name="filters" value="stat" /></bean>2. 組合配置
StatFilter可以和其他的Filter配置使用,比如:
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">... ...<property name="filters" value="stat,log4j" /></bean>在上面的配置中,StatFilter和Log4jFilter組合使用。
3. 通過proxyFilters屬性配置
別名配置是通過filters屬性配置的,filters屬性的類型是String。如果需要通過bean的方式配置,使用proxyFilters屬性。
<bean id="stat-filter" class="com.alibaba.druid.filter.stat.StatFilter"><property name="slowSqlMillis" value="10000" /><property name="logSlowSql" value="true" /> </bean> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"init-method="init" destroy-method="close">... ...<property name="filters" value="log4j" /><property name="proxyFilters"><list><ref bean="stat-filter" /></list></property> </bean>其中filters和proxyFilters屬性是組合關系的,不是替換的,在上面的配置中,dataSource有了兩個Filter,StatFilter和Log4jFilter。
4. SQL合并配置
當你程序中存在沒有參數化的sql執行時,sql統計的效果會不好。比如:
select * from t where id = 1 select * from t where id = 2 select * from t where id = 3在統計中,顯示為3條sql,這不是我們希望要的效果。StatFilter提供合并的功能,能夠將這3個SQL合并為如下的SQL
select * from t where id = ?配置StatFilter的mergeSql屬性
<bean id="stat-filter" class="com.alibaba.druid.filter.stat.StatFilter"><property name="mergeSql" value="true" /> </bean> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"init-method="init" destroy-method="close">... ...<property name="proxyFilters"><list><ref bean="stat-filter" /></list></property> </bean>StatFilter支持一種簡化配置方式,和上面的配置等同的。如下:
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">... ...<property name="filters" value="mergeStat" /></bean>mergeStat是的MergeStatFilter縮寫,我們看MergeStatFilter的實現:
public class MergeStatFilter extends StatFilter {public MergeStatFilter() {super.setMergeSql(true);}}從實現代碼來看,僅僅是一個mergeSql的缺省值。
也可以通過connectProperties屬性來打開mergeSql功能,例如:
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">... ...<property name="filters" value="stat" /><property name="connectionProperties" value="druid.stat.mergeSql=true" /></bean>或者通過增加JVM的參數配置:
-Ddruid.stat.mergeSql=true
4.1 合并SQL對tddl的支持
在druid-0.2.17版本之后,sql合并支持tddl,能夠對分表進行合并。
5. 慢SQL記錄
StatFilter屬性slowSqlMillis用來配置SQL慢的標準,執行時間超過slowSqlMillis的就是慢。slowSqlMillis的缺省值為3000,也就是3秒。
<bean id="stat-filter" class="com.alibaba.druid.filter.stat.StatFilter"><property name="slowSqlMillis" value="10000" /><property name="logSlowSql" value="true" /> </bean>在上面的配置中,slowSqlMillis被修改為10秒,并且通過日志輸出執行慢的SQL。
slowSqlMillis屬性也可以通過connectProperties來配置,例如:
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">... ...<property name="filters" value="stat" /><property name="connectionProperties" value="druid.stat.slowSqlMillis=5000" /></bean>6. 合并多個DruidDataSource的監控數據
缺省多個DruidDataSource的監控數據是各自獨立的,在Druid-0.2.17版本之后,支持配置公用監控數據,配置參數為useGloalDataSourceStat。例如:
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">... ...<property name="useGlobalDataSourceStat" value="true" /></bean>或者通過jvm啟動參數來指定,例如:
-Ddruid.useGlobalDataSourceStat=true全部使用jvm啟動參數來配置,可以這樣:
-Ddruid.filters=mergeStat -Ddruid.useGlobalDataSourceStat=truehttps://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE_StatFilter
總結
以上是生活随笔為你收集整理的Druid 配置_StatFilter的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Druid数据库连接池使用
- 下一篇: Druid 配置_StatViewSer