如果连接数大于最大数目,后面的连线会失败,无法连接。
不管何种数据库,一般都有定义最大连接数,否则若不限制连接数,会使数据库处理不过来而崩溃。
设置连接数的好处,就是保证已连接用户的正常使用。
当连接数大于最大数目时,后面的连接会无法连接,但已连接上的用户使用不受影响。
只有之前的用户断开连接,后面的用户才可以连接上。相当于在总数不变的情况下,最多只能保持收支平衡,不可以收大于支。
druid监控地址: >
执行了错误的sql。
问题就出在druid连接池上,连接池在执行完了某一条错误的sql以后,报错信息会被保存在执行sql的线程中,当下一条拿到这个线程的sql执行时,就直接报错,而不会去执行sql。
最终的解决方法就是解决那条问题线程,肯定是哪里出错才会保留报错信息,或者升级druid的版本。
我也发现这个问题
跟了一下源码
removeAbandonedTimeout
这个属性不管是否配置
初始化init方法调用后
removeAbandonedTimeout的值是 300000
也就是使用的DruidAbstractDataSource里面的默认值
protected volatile boolean removeAbandoned;
protected volatile long removeAbandonedTimeoutMillis = 300 1000;
现针对数据库密码加密方面,利用druid进行数据库加密,实现项目配置文件中数据库密码密文存储,一定程度上保证了数据安全。
配置方法:
1、数据源配置[spring-mybatisxml文件]
<!-- 配置数据源 -->
<bean name="dataSource" class="comalibabadruidpoolDruidDataSource"
init-method="init" destroy-method="close">
<property name="driverClassName" value="${jdbcdriver}" />
<property name="url" value="${jdbcurl}" />
<property name="username" value="${jdbcusername}" />
<property name="password" value="${jdbcpassword}" />
<!-- 配置初始化大小、最小、最大 -->
<property name="initialSize" value="${jdbcpoolinit}" />
<property name="minIdle" value="${jdbcpoolminIdle}" />
<property name="maxActive" value="${jdbcpoolmaxActive}" />
<!-- 配置获取连接等待超时的时间 -->
<property name="maxWait" value="60000" />
<!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
<property name="timeBetweenEvictionRunsMillis" value="60000" />
<!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
<property name="minEvictableIdleTimeMillis" value="300000" />
<property name="validationQuery" value="${jdbcvalidationquery}" />
<property name="testWhileIdle" value="true" />
<property name="testOnBorrow" value="false" />
<property name="testOnReturn" value="false" />
<!-- 打开PSCache,并且指定每个连接上PSCache的大小(Oracle使用)
<property name="poolPreparedStatements" value="true" />
<property name="maxPoolPreparedStatementPerConnectionSize" value="20" /> -->
<!-- 配置监控统计拦截的filters -->
<!--<property name="filters" value="stat" /> -->
<property name="filters" value="${jdbcfilters}" />
<property name="connectionProperties"
value="${jdbcconnectionProperties}"/>
</bean>
DRUID是阿里巴巴开源上一个数据库连接池实现,它结合了C3P0、DBCP、PROXOOL等DB池的优点,同时加入了日志监控,可以很好的监控DB池连接和SQL的执行情况,可以说是针对监控而生的DB连接池(据说是目前最好的连接池,不知道速度有没有BoneCP快)。
1pomxml
2yml文件配置
3访问
启动项目,访问druid管理页面- localhost:8080/druid/loginhtml,登录的用户名和密码,我在yml配置成test,所以用test登录就行,登录后页面如下:
举个例子
连接数据库查询表的相关语句:
ClassforName("commicrosoftjdbcsqlserverSQLServerDriver");
Connection conn=DriverManagergetConnection("jdbc:microsoft:sqlserver://127001:1433;DatabaseName=mytest","sa","123");
Statement stmt=conncreateStatement();
ResultSet rs=stmtexecuteQuery("select from userinfo");
while(rsnext())
以上就是关于druid 初始化连接数不够是 要设置哪些参数创建数据库连接全部的内容,包括:druid 初始化连接数不够是 要设置哪些参数创建数据库连接、Druid连接池原理、在使用druid数据库连接池执行后为啥会出现出现无效的源发行版14等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)