一、数据库驱动包选择
- 数据库驱动包由数据库厂商提供,另外若应用采用hibernate等持久框架,还需要国产数据库提供方言类包,如: 达梦的DmDialect-for-hibernate3.0.jar。
- 确认数据库版本对应的数据库驱动包的版本。
- 确认数据库驱动包支持的JDK版本与JDBC规范,目前普遍支持JDK1.8及以上,支持JDBC4.0规范。
错误的方式:从网上下载数据库驱动包直接用,不考虑版本兼容性。
二、数据库驱动包的存放
- 若应用采用自带开源数据源,则数据库驱动包放在应用或公共库类路径下。
- 若采用TongWeb数据源,则建议把数据库驱动包直接放在TongWeb的lib目录下,这样数据源与应用采用同一份驱动。
- 若存在一个TongWeb上配置多个同一类型数据库,但数据库版本不同、对应驱动包版本也不同的情况时,不能将所有驱动包放在TongWeb的lib下。 需要放置在其它目录下,在配置数据源时,指定对应的数据库驱动包。
三、数据源参数的配置
1. 基础参数配置
| 参数 | 说明 |
|---|---|
| 最小连接数 | 根据业务系统并发量设置 |
| 最大连接数 | 根据业务系统并发量设置 注意:不得超过数据库可用连接数,否则超出数据库限制。 |
| 创建连接时验证 | 建议开启项,以确保应用获取有效的数据库连接。 |
| 获取连接时验证 | |
| 归还连接时验证 | |
| 验证方式 | 方式一:通过connection.isValid()方法验证(推荐方式) 方式二:通过SQL语句,需用最简单的SQL语句。 |
| 验证间隔 | 连接验证不是应用每次获取连接都验证,而是有一定的时间间隔。 通常默认值即可,若网络或数据库不稳定导致的连接不稳定,建议把验证间隔设短。 |
| 空闲连接检查 | 建议开启项,当业务不忙时,连接池中空闲的连接数大于连接池的最小连接数时,可以释放连接,保持最小连接数,避免一直占用数据库连接。 |
| URL参数/连接参数 | 不同数据库有不同的参数,通常在URL或连接参数中配置,如:connectiontimeout、sockettimeout、serverTimezone等等,具体由数据库驱动来设置。 |
2. SQL与连接泄露场景
若应用系统在运行一段时间后,数据源连接占满,而长时间不释放,则可能存在连接泄露的问题,应用没有对连接进行关闭而又不能修复代码解决,这时需要配置以下参数。
| 参数 | 说明 |
|---|---|
| 即时泄露回收 | 遇到泄露问题,无法修复应用代码时建议开启项,该功能是当http请求处理完成后回收连接。 但对于应用自启线程使用数据源连接情况,无法跟踪关闭连接。 |
| 泄露超时时间 | 上线初期建议开启,超时时间设为60秒。 在超时时打出stack traces 日志,通过日志查找应用代码泄露的位置。 |
| 泄漏时记录日志 | |
| 泄露回收/关闭连接 | 若无法修复应用代码,则需要开启强制回收连接功能,需考虑业务最长SQL时间,使“泄露超时时间” 大于业务最长SQL时间再开启。以免中断正常的业务。 TongWeb8 增加一个“泄漏判定比例 ” >80%再关闭连接。 |
| 语句跟踪/自动关闭语句 | 当应用statement未关闭,造成游标泄露时,建议开启该项。 |
| 跟踪语句堆栈 | TongWeb8功能,打出stack traces 日志可以分析应用statement泄露位置。 |
3. 慢SQL场景
监控有哪些慢SQL影响业务,可以针对性的对SQL进行优化。
| 参数 | 说明 |
|---|---|
| 慢SQL检测时间 | 上线初期建议开启, 设置慢SQL的检测时间,记录慢的SQL进行优化。 |
| 慢SQL日志 | |
| SQL超时 | 本质是设置statment的setQueryTimeout方法,若应用SQL长时间执行阻塞无法解决,可以设置此值中止SQL执行。 |
4. MySQL驱动兼容
针对以mysql驱动为主的国产数据库,TongWeb7 需要开启“Mysql驱动兼容 ”选项。
具体原因见:关于TongWeb数据源兼容mysql驱动的注意事项-CSDN博客
5. SQL异常关闭连接
TongWeb8.0 建议开启“SQL错误时回收”, 当SQL异常时,会回收当前连接。TongWeb7.0无此项,默认SQL异常时就会回收当前连接。
6. 线程关联
若遇到一个请求处理线程需要同时占用多个数据源连接的场景,建议开启线程关联。这样在一次请求处理中,占用的是同一个数据源连接对象。
若一次请求处理中涉及嵌套事务,事务提交的场景,则不能开启该功能。
常见错误的方式:
- 上线初期容易出性能问题,未开启慢SQL日志,泄露日志。
- 最大连接数配置过大,超过数据库允许的连接数。
- 驱动包版本过老。
1万+

被折叠的 条评论
为什么被折叠?



