Mybatis破MySql8小时断线问题1
需积分: 0 18 浏览量
更新于2022-08-08
收藏 313KB DOCX 举报
标题 "Mybatis破MySql8小时断线问题1" 指的是在使用Mybatis框架与MySQL数据库交互时遇到的一个常见问题,即由于MySQL数据库的连接超时机制导致的8小时断线。描述中提到,当数据库连接闲置时间超过MySQL默认设定的8小时后,数据库会主动关闭这个连接。然而,如果使用JDBC或连接池的客户端仍尝试使用这个已断开的连接,就会引发异常。
MySQL的这个超时机制是由系统变量`wait_timeout`控制的,单位为秒。默认设置是8小时(28800秒),但最大可设置为31536000秒,即一年。设置较大的等待时间虽然可以减少因闲置而断开的连接,但这并不是最佳解决方案,因为长期保持无活动的连接不仅可能导致数据库性能下降,还会占用宝贵的内存资源,甚至可能导致数据库连接数耗尽。
为了更有效地处理这个问题,通常采取的方法是在使用可能已经闲置的连接前进行ping操作,确保连接仍然有效。Mybatis自带的连接池支持这样的功能。通过以下三个配置属性可以启用和定制ping机制:
1. `poolPingEnabled` - 默认值为false,将其设为true即可开启ping机制。
2. `poolPingQuery` - 定义一个用于ping数据库的SQL语句,通常使用简单的“SELECT 1”或“SHOW VARIABLES LIKE 'version'”等无害的查询。
3. `poolPingConnectionsNotUsedFor` - 默认值为0,表示毫秒,设置为非零值后,只有那些闲置时间超过这个值的连接才会在被使用前进行ping检查。例如,设置为3600000(1小时)意味着如果连接在过去一小时内未使用,那么在再次使用前会执行ping操作。
启用ping机制可以避免不必要的异常,同时减少了对数据库的额外负担,因为它仅在必要时进行ping检查。这种方法优于简单地增加`wait_timeout`,因为它更灵活且节省资源。在高并发或者低活跃度的系统中,正确配置这些参数对于维持数据库连接的稳定性和效率至关重要。
爱设计的唐老鸭
- 粉丝: 31
- 资源: 291
最新资源
- 指针扫描和内存遍历二合一工具
- 基于JavaScript的在线考试系统(编号:65965158)(1).zip
- 五相电机双闭环矢量控制模型-采用邻近四矢量SVPWM-MATLAB-Simulink仿真模型包括: (1)原理说明文档(重要):包括扇区判断、矢量作用时间计算、矢量作用顺序及切时间计算、PWM波的生成
- Linux下的cursor安装包
- springboot-教务管理系统(编号:62528147).zip
- 3dmmods_倾城系列月白_by_白嫖萌新.zip
- SVPWM+死区补偿(基于电流极性)+高频注入法辨识PMSM的dq轴电感(离线辨识)-simulink
- 微信跑腿小程序的设计与实现
- 基于 Java 实现的上位机通讯程序,可与单片机进行数据交换
- screentshot-2024.12.22-20.45.35.jpg