1.0 慢SQL日志输出
工作中我们发现网页加载慢,首先会先想到SQL语句执行慢,其次是发生异常错误了。那怎么知道SQL 慢呢,来配置说明
(1)数据源配置:监控统计拦截的filters,日志记录
<property name="proxyFilters">
<list>
<ref bean="stat-filter" />
<ref bean="log4j-filter" />
</list>
</property>
(2)慢SQL记录配置
<bean id="stat-filter" class="com.alibaba.druid.filter.stat.StatFilter">
<property name="mergeSql" value="${mergeSql}" />
<property name="slowSqlMillis" value="${slowSqlMillis}" />
<property name="logSlowSql" value="true" />
</bean>
//支持多种log框架
<bean id="log4j-filter" class="com.alibaba.druid.filter.logging.Log4jFilter">
</bean>
2.0 WallConfig拦截配置
为了防止某些员工使用drop等语句,可以进行拦截配置。
(1)数据源配置:监控统计拦截的filters,日志记录
<property name="proxyFilters">
<list>
<ref bean="wall-filter" />
</list>
</property>
(2)WallConfig配置
<bean id="wall-filter-config" class="com.alibaba.druid.wall.WallConfig"
init-method="init">
<!-- 指定配置装载的目录 -->
<property name="dir" value="META-INF/druid/wall/oracle" />
<!-- 检测是否使用了禁用的表 -->
<property name="tableCheck" value="true" />
<!--truncate语句是危险,缺省打开,这里关闭 -->
<property name="truncateAllow" value="false" />
<!--不允许执行Alter Table语句 -->
<property name="alterTableAllow" value="false" />
<!--不允许执行drop Table语句 -->
<property name="dropTableAllow" value="false" />
<!--允许一次执行多条sql语句 -->
<property name="multiStatementAllow" value="true" />
<!--检查无where条件的DELETE语句 -->
<property name="deleteWhereNoneCheck" value="false" />
<!--检查无where条件的update语句 -->
<property name="updateWhereAlayTrueCheck" value="true" />
<property name="updateWhereNoneCheck" value="false" />
<!--不对sql进行严格的语法检查,Druid SQL Parser在某些场景不能覆盖所有的SQL语法,出现解析SQL出错 -->
<property name="strictSyntaxCheck" value="false" />
<!--例子:不支持select -->
<!-- <property name="selelctAllow" value="false"/> -->
</bean>
<bean id="wall-filter" class="com.alibaba.druid.wall.WallFilter">
<property name="dbType" value="${dbType}" />
<property name="logViolation" value="${logViolation}" />
<!-- throwException设置为false 允许打印异常,但是不影响sql执行 -->
<property name="throwException" value="${throwException}" />
<property name="config" ref="wall-filter-config" />
</bean>
网友评论