数据库连接池工作机制(针对数据库连接池到DRDS连接探活的优化)

数据库连接池工作机制(针对数据库连接池到DRDS连接探活的优化)

数据库连接池工作机制的问题你了解吗,本站通过大数据汇集了数据库连接池工作机制的相关解答,希望对你有所帮助。



1. 问题背景

近期在给某专有云客户进?云产品应?性能优化分析时,发现了?个有趣的关于DRDS使?层?的问题,这?给?家分享?下。

使?过DRDS产品的同学都知道在DRDS中,未分库分表的数据表会存储在“0号库”上,对于这些表操作的SQL会被分发到“0号库”上执?。所以?般情况下,0号库所在实例的压?会?其它实例的压?稍??些。近期分析该客户的数据库性能时,发现客户使?的DRDS下0号库所在的RDS实例的压?明显?其它RDS实例?出许多。

图1:SQL语句平均每秒执行次数及事务数

2. 原因分析

通过查看0号库所在的RDS实例的执?SQL发现,有?量的 SELECT 'x' 的查询语句。检查应?侧代码后发现,这个查询语句是应?侧连接池配置的连接探活SQL,所有的连接池实现?乎都有这个功能,可以通过探活SQL检测连接当前是否可?。

那么问题来了:

答案?定是有?的,因为如果因?络闪断或其它原因导致的连接状态不可?,即使获取到了连接对象,也不能进?数据访问操作。所以这个检测是有必要的,但对于使?DRDS作为数据源的场景来说,?前配置的检测?式是存在问题的。

这?点可以从DRDS上看 SELECT 'x' 的执?计划得到证实,如下:

图4:执?结果1

实际上,这样的数据源连接检测是没有意义的。因为:

答案当然是有的,经过与DRDS研发同学确认,将探活SQL修改为 SELECT 'x' FROM dual 即可。

修改后,再次在DRDS查看执?计划,如下:

数据库连接池工作机制(针对数据库连接池到DRDS连接探活的优化)

图5:执?结果2

在应?侧修改连接池的探活SQL配置后,从0号库所在实例上看,已经看不到探活SQL的执?记录,?且从修改前和修改后0号库所在实例的压?来看,效果也?较明显,0号库的压?相?之前下降了?概80%左右。

图6:SQL语句平均每秒执行次数及事务数2

4. 连接池参数配置

?此,0号库压?过?的问题解决了,下?我们聊聊为什么会有?量的探活语句出现。

官?解释如下:

相关信息就介绍到这里,数据库连接池工作机制的问题希望对你有所帮助。

文章版权声明:除非注明,否则均为边学边练网络文章,版权归原作者所有

相关阅读

最新文章

热门文章

本栏目文章