【Druid】高级应用

2019-06-24  本文已影响0人  嘻洋洋

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>

上一篇 下一篇

猜你喜欢

热点阅读