druid配置文档.docx

上传人:scccc 文档编号:13867035 上传时间:2022-01-25 格式:DOCX 页数:8 大小:26KB
返回 下载 相关 举报
druid配置文档.docx_第1页
第1页 / 共8页
druid配置文档.docx_第2页
第2页 / 共8页
druid配置文档.docx_第3页
第3页 / 共8页
druid配置文档.docx_第4页
第4页 / 共8页
druid配置文档.docx_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《druid配置文档.docx》由会员分享,可在线阅读,更多相关《druid配置文档.docx(8页珍藏版)》请在三一文库上搜索。

1、druid配置文档 Druid是什么?有什么作用?Druid首先是一个数据库连接池,但它不仅仅是一个数据库连接池,它还包含一个ProxyDriver,一系列内置的JDBC组件库,一个SQL Parser。 为什么说Druid是“最好的数据库连接池?第一,强大的监控特性,通过Druid提供的监控功能,可以清楚知道连接池和SQL的工作情况。 监控SQL的执行时间、ResultSet持有时间、返回行数、更新行数、错误次数、错误堆栈信息。 SQL执行的耗时区间分布。什么是耗时区间分布呢?比方说,某个SQL执行了1000次,其中01毫秒区间50次,110毫秒800次,10100毫秒100次,100100

2、0毫秒30次,110秒15次,10秒以上5次。通过耗时区间分布,能够非常清楚知道SQL的执行耗时情况。 监控连接池的物理连接创立和销毁次数、逻辑连接的申请和关闭次数、非空等待次数、PSCache命中率等。第二,方便扩展。Druid提供了Filter-Chain模式的扩展API,可以自己编写Filter拦截JDBC中的任何方法,可以在上面做任何事情,比方说性能监控、SQL审计、用户名密码加密、日志等等。Druid内置提供了用于监控的StatFilter、日志输出的Log系列Filter、防御SQL注入攻击的WallFilter。 第三,Druid集合了开源和商业数据库连接池的优秀特性,并结合阿里

3、巴巴大规模苛刻生产环境的使用经验进行优化。 ExceptionSorter。当一个连接产生不可恢复的异常时,例如Oracle error_code_28 session has been killed,必须立刻从连接池中逐出,否那么会产生大量错误。目前只有Druid和JBoss DataSource实现了ExceptionSorter。 PSCache内存占用优化对于支持游标的数据库Oracle、SQL Server、DB2等,不包括MySql,PSCache可以大幅度提升SQL执行性能。一个PreparedStatement对应效劳器一个游标,如果PreparedStatement被缓存起来

4、重复执行,PreparedStatement没有被关闭,效劳器端的游标就不会被关闭,性能提高非常显著。在类似“SELECT * FROM T WHERE ID = ?这样的场景,性能可能是一个数量级的提升。但在Oracle JDBC Driver中,其他的数据库连接池DBCP、JBossDataSource会占用内存过多,极端情况可能大于1G。Druid调用OracleDriver提供管理PSCache内部API。 LRU是一个性能关键指标,特别Oracle,每个Connection对应数据库端的一个进程,如果数据库连接池遵从LRU,有助于数据库效劳器优化,这是重要的指标。Druid、DBCP

5、、Proxool、JBoss是遵守LRU的。BoneCP、C3P0那么不是。BoneCP在mock环境下性能可能还好,但在真实环境中那么就不好了。 将其中的某个模块比方监控模块用到其他连接池可以通过DruidDriver把内置的Filter用在其他连接池中。在2021年上半年DruidDataSource不成熟的时候,我们也是这么做的。在其他连接池中使用内置的Filter,需要修改jdbc-url,使用DruidDriver作为一个ProxyDriver。 Druid的SQL解析功能Druid提供了MySql、Oracle、Postgresql、SQL-92的SQL的完整支持,这是一个手写的高

6、性能SQL Parser,支持Visitor模式,使得分析SQL的抽象语法树很方便。简单SQL语句用时10微秒以内,复杂SQL用时30微秒。 通过Druid提供的SQL Parser可以在JDBC层拦截SQL做相应处理,比方说分库分表、审计等。Druid防御SQL注入攻击的WallFilter就是通过Druid的SQL Parser分析语义实现的。 典型的配置实例为了方便大家迁移,Druid的配置和DBCP是根本一致的,如果你原来是使用DBCP,迁移是十分方便的,只需要把修改为就好了。以下是一个参考配置: Xml代码 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.

7、 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 在上面的配置中,通常你需要配置url、username、password、maxActive这几项。 在DruidDataSource中,你可以不配置DriverClass,它根据url自动识别。Druid能够自动识别20多中url,常见的JDBC Driver都包括了。 Druid是一个开源工程,基于协议,你可以免费自由使用。Druid只支持JDK 6以上版本,不支持和。 目前使用其他连接池DBCP/C3P0/Proxool等,如何迁移到Druid各种连接池配置参数比拟Druid DBCP C3P0 J

8、Boss Weblogic Proxool 数据库用户名称 Username Username User user-name 数据库密码 Password Password Password password驱动名称 DriverClassName DriverClassName DriverClass driver-class DriverName driver-class JDBC连接串 Url Url JdbcUrl connection-url Url driver-url JDBC连接属性 Properties Properties Properties connection-pro

9、perty Properties 初始化大小 InitialSize InitialSize InitialPoolSize Initial Capacity 连接池最小空闲 MinIdle MinIdle MinPoolSize min-pool-size minimum-connection-count 连接池最大空闲 MaxIdle MaxIdle 连接池最大使用连接数量 MaxActive MaxActive MaxPoolSize max-pool-size MaximumCapacity maximum-connection-count 最小逐出时间 MinEvictableIdl

10、eTimeMillis MinEvictableIdleTimeMillismaxIdleTime idle-timeout-minutes InactiveConnectionTimeoutSeconds house-keeping-sleep-time 最多等待线程 MaxWaitThreadCount MaxWaitThreadCount HighestNumWaiters 连接池增长步长 AcquireIncrement CapacityIncrement 获取连接时测试是否有效TestOnBorrow TestOnBorrow TestConnectionOnCheckout tes

11、t-before-use 归还连接时是否测试有效 TestOnReturn TestOnReturn TestConnectionOnCheckin TestConnectionsOnReserve test-after-use 连接空闲时测试是否有效TestWhileIdle TestWhileIdle 测试有效用的SQL Query ValidationQuery ValidationQuery PreferredTestQuery check-valid-connection-sqlhouse-keeping-test-sql 测试有效的超时时间 ValidationQueryTimeo

12、ut ValidationQueryTimeout 连接初始化SQL ConnectionInitSqls ConnectionInitSqls new-connection-sql InitSQL 连接最大存活实现 MaxConnectionAge 连接泄漏的超时时间 RemoveAbandonedTimeout RemoveAbandonedTimeout UnreturnedConnectionTimeout 关闭泄漏的连接时打印堆栈信息 LogAbandoned LogAbandoned DebugUnreturnedConnectionStackTraces 逐出连接的检测时间间隔T

13、imeBetweenEvictionRunsMillis TimeBetweenEvictionRunsMillis idleConnectionTestPeriod ShrinkFrequencySeconds Statement缓存算法 StatementCacheTypeStatement缓存大小 MaxPoolPreparedStatementPerConnectionSize MaxOpenPreparedStatements maxStatements prepared-statement-cache-size StatementCacheSize获取连接最大等待时间 maxWai

14、t maxWait blocking-time-millisFatalException处理 ExceptionSorter exception-sorter-class-name fatal-sql-exception 调用原生方法检测连接是否有效 ValidConnectionCheckerClassName valid-connection-checker-class-name 连接出错时重试次数ConnectionErrorRetryAttempts acquireRetyrAttempts 连接出错时重试N次后退出breakAfterAcquireFailure breakAfter

15、AcquireFailure 检测未关闭Statement 缺省翻开,无法配置 track-statements TestTableNameSecondsToTrustAnIdlePoolConnection ConnectionCreationRetryFrequencySeconds LoginDelaySeconds Profile Connection Usage 获取连接等待统计 NotEmptyWait Profile Connection Reservation Wait Profile Connection Leak Profile Connection Reservation

16、 Failed Profile Statement Cache Entry Profile Statement Usage Profile Connection Last Usage Profile Connection Multithreaded Usage Profile Harvest Frequency Seconds 连接池扩展 Filters DriverInterceptor CredentialMappingEnabled ConnectionReserveTimeoutSeconds Statement执行超时时间 QueryTimeout StatementTimeout

17、连接池关闭时对正在使用连接的处理方式 IgnoreInUseConnectionsEnabled 把连接放到ThreadLocal中 PinnedToThread 关闭“赃连接调用过getVendorConnection方法 RemoveInfectedConnections 类型映射配置 type-mapping 事务隔离级别 DefaultTransactionIsolation DefaultTransactionIsolation transaction-isolationReadOnly设置 DefaultReadOnly DefaultReadOnly AutoCommit设置 DefaultAutoCommit DefaultAutoCommit Labels parameters

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1