- 博客(10)
- 收藏
- 关注
原创 2022-05-19 Druid源码阅读——Druid相关配置参数
Druid基本信息配置配置缺省值说明name如果存在多数据源的情况下用于区分数据源,如果没有配置将生成一个名字,格式为DataSource-" + System.identityHashCode(this)数据库连接配置配置缺省值说明url数据库连接urlusername连接数据库的用户名password连接数据库的密码driverClassName数据库驱动连接池配置配置缺省值说明as
2022-05-21 01:40:53 436
原创 2022-05-19 Druid源码阅读——removeAbandoned参数(二)
1.removeAbandoned如何排查连接泄露1.1 什么是连接泄露连接池中连接数同一时间被用光(长SQL、连接执行完成后没有及时归还等均有可能造成),超过获取连接最大等待时间后仍然没有获取到连接。1.2 如何通过removeAbandoned排查连接泄露通过开启removeAbandoned参数,使其在每次获取连接时记录当前线程的堆栈信息。public DruidPooledConnection getConnectionDirect(long maxWaitMillis) throws S
2022-05-20 05:46:01 2524
原创 2022-05-18 Druid源码阅读——removeAbandoned参数(一)
1.removeAbandonedremoveAbandoned功能常用来进行连接泄露检查,该功能共有三个参数进行组合配置。参数类型默认值含义removeAbandonedBooleanfalse是否开启removeAbandoned功能removeAbandonedTimeoutLong300000活动时间超过该参数值的连接将被自动回收logAbandonedBooleanfalse是否开启日志打印回收信息2.removeAbandoned功
2022-05-18 23:42:44 1951
原创 2022-05-17 Druid源码阅读——Druid在什么时候会创建连接(二)
CreateConnectionTask#runInternalCreateConnectionTask是用于Druid中用于创建连接的任务,实现了Runnable接口,主要用于向线程池中提交任务。public class CreateConnectionTask implements Runnable { private int errorCount = 0; private boolean initTask = false; private final long t..
2022-05-18 00:07:25 626
原创 2022-05-16 Druid源码阅读——Druid在什么时候会创建连接(一)
1.Druid如何创建连接Druid连接池所持有的连接对象为DruidConnectionHolder,其内部持有Connection类型的连接对象,该连接由构造方法进行引用,该方法被类中其他构造函数所调用,发现其DruidConnectionHolder(DruidAbstractDataSource dataSource, PhysicalConnectionInfo pyConnectInfo)构造方法中含有PhysicalConnectionInfo类型,遂查看该类型的构造方法。public D
2022-05-17 00:00:00 574
原创 2022-05-14 Druid源码阅读——Druid连接检查机制
1.Druid提供的校验参数Druid对于连接校验提供了六个参数,其中testOnBorrow、testOnReturn、testWhileIdle是Druid所提供的连接校验时点,其余三个参数为校验的相关配置。配置缺省值说明validationQuery用来检测连接是否有效的sql,要求是一个查询语句,常用select ‘x’。如果validationQuery为null,testOnBorrow、testOnReturn、testWhileIdle都不会起作用。val
2022-05-15 00:24:22 3053
原创 2022-05-13 Druid源码阅读——PreparedStatementPool的结构
1.PreparedStatementPool的数据结构在PreparedStatementPool中,成员变量除了日志外,只有两项,一项为LRUCache类型的map,另一项为DruidAbstractDataSource的dataSource,其中map属性为已缓存语句的存储结构,dataSource为当前连接池的指向。public class PreparedStatementPool { private final static Log LOG = LogFactory.getLog(P
2022-05-14 01:01:09 832
原创 2022-05-12 Druid源码阅读——poolPreparedStatements是如何控制缓存游标的?
在Druid预编译SQL时,会检查是否开启poolPreparedStatements参数缓存预编译SQL,这些预编译的SQL存放在哪里?在什么时候进行存放?1.如何开启poolPreparedStatements(PSCache)功能需要注意的是,maxPoolPreparedStatementPerConnectionSize的加载顺序在poolPreparedStatements之后,如果将maxPoolPreparedStatementPerConnectionSize设置为负数,则poo.
2022-05-12 23:56:19 4608
原创 2022.05.11 Druid源码阅读——为什么DruidDriver.getInstance()会加载其他驱动?
1.获得静态单例public class DruidDriver implements Driver, DruidDriverMBean { private final static DruidDriver instance = new DruidDriver(); /** * 此方法将返回在DruidDriver中所定义的单例 * @return */ public static DruidDriver getInstance() { return instance; }
2022-05-11 22:25:34 288
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人