杭州银行×TiDB:打造首个云原生分布式国产银行核心业务系统
749
2023-07-05
jdbc中自带MySQL连接池实例分析
引言
下面是com.mysql.cj.jdbc.MysqlConnectionPoolDataSource使用实践,比较简单,API 倒是挺多的,但是大多数都用不到。
package com.funtest.groovytestimport com.funtester.frame.SourceCodeimport com.mysql.cj.jdbc.MysqlConnectionPoolDataSourceclass MysqlPoolTe extends SourceCode { public static void main(String[] args) { def query = "select * from testers limit 2;" def source = new MysqlConnectionPoolDataSource() source.setServerName("localhost") source.setPort(3306) source.setUser("root") source.setPassword("root123456") source.setDatabaseName("funtester") source.setAllowMultiQueries(true) def connection = source.getPooledConnection() def statement = connection.getConnection().createStatement() while (true) { sleep(1) def query = statement.executeQuery(query) while (query.next()) { output query.getString("name") } } }}登录后复制
这里有个很容易的坑,就是有个setURL()还有一个setUrl(),其实这两个没有任何区别,我只能说可能为了兼容旧版本把。还有就是设置了 URL 之后,好像 database 设置不起作用了,也是妙明感觉设计真糟心,所以在上面的案例中我也没有用到这俩方法。
我进行测试后发现,尽管我创建了大量线程,但只有少数线程始终处于连接状态。大概是经过几秒钟就会被回收一次,但是总创建数依旧非常高。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。