美文网首页
【Druid】高级应用

【Druid】高级应用

作者: 嘻洋洋 | 来源:发表于2019-06-24 14:10 被阅读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>
    
    

    相关文章

      网友评论

          本文标题:【Druid】高级应用

          本文链接:https://www.haomeiwen.com/subject/biqnqctx.html