MYSQL(连接池的引入)
连接池:
背景:每次执行对db的CRUD操作时,每次都建立数据库的连接,使用完毕之后都要断开连接(connection.close)释放资源。如此倘若有多用户对db频繁的操作,则每次都要建立连接,是非常消耗资源的,也是减低对db访问的效率。
类似于同时一万人去一家饭店去吃饭,根本照顾不过来,老板要疯。
其实在开发的过程中,db会单独放在一台或者多台电脑上,这样的电脑就是数据库服务器。
作用:
为了减轻db的一些压力,我们可以使用数据库连接池技术。
意义:
连接池:存放了多个连接。将来application就可以直接访问连接池,再有连接池去访问db。也就是说,我们用户不需要关心和管理连接,由连接池来管理。如此就达到了提高访问db的效率。
使用c3p0,dbcp等
1 导包
1.1下载
https://sourceforge.net/projects/c3p0/
1.2选择两个jar包
1.3 加入到工程中,并add build path
2 配置
2.1连接池的配置
中存放的都是连接,比如最大连接数,最小连接数,这些都要进行配置。这里配置连接池的属性。
2.2 DataSource 数据源
指的是数据的源头(mysql oracle。。。。或者其他的db)的配置,比如用户名,密码,url等
2.3 写配置文件
一般情况下,使用一个xml文件来完成配置。注意:对于c3p0的配置文件,名字必须为c3p0-config.xml。
configuration
<!-- c3p0默认配置 配置多个数据源(数据库的连接) --> <default-config> <!-- 1 先配置DataSource --> <!-- driverClass url user password --> <property name="driverClass">com.mysql.cj.jdbc.Driver</property> <property name="jdbcUrl">jdbc:mysql://localhost:3306/laosun?serverTimezone=GMT%2B8</property> <property name="user">root</property> <property name="password">root</property> <!-- 2 配置pool 举了3个例子,其他的不设置的情况下,都使用默认的设置--> <!-- 初始化时 pool中获取的连接数 --> <property name="initialPoolSize">5</property> <!-- pool保留最大连接数 --> <property name="maxPoolSize">50</property> <!-- 最大空闲时间 多少秒内未使用则将连接丢弃,如果设置0,代表永不丢弃,默认值是0--> <property name="maxIdleTime">1000</property> </default-config>
C3p0只是对连接进行了优化而已。
在使用上,和之前的差不多,只不过连接时发生变化:
// 早先获取连接的方式:
// DriverManager.getConnection(url)
// 现在使用pool获取连接:
// 使用默认的构造,会自动加载名为c3p0-config.xml文件,进行配置
ComboPooledDataSource dataSource = new ComboPooledDataSource();
Connection connection = dataSource.getConnection();
// 以下的代码流程都一样。
// connection.prepareStatement(sql);
- C++ 结合mysql-connector 的连接池实验记录
- mysql连接池不能回避的wait timeout问题
- java数据库连接池proxool介绍及mysql8小时断开连接问题的说明
- nodejs的mysql模块学习(六)连接池的创建和使用
- Ibatis在mysql中获得主键与连接池技术合并的又一问题
- 如何MYSQL实现连接池
- java开发c3p0连接池,JDBC,数据库mysql,java开发DAO接口及实现增删改查操作
- MySQL之长连接、短连接、连接池(转载:http://www.ywnds.com/?p=9801)
- [MySQL]自定义连接池代码的编写过程及详解
- mysql 连接池超时
- 关于nodejs mysql 连接池query出的结果是乱码的解决问题
- 使用TOMCAT 连接池连接mysql(解决Cannot create JDBC driver of class '' for connect URL 'null')
- VC2010利用MySQL++访问mysql. 及连接池示例
- Mysql线程池系列一:什么是线程池和连接池( thread_pool 和 connection_pool)
- mysql 最大连接数 & 连接池
- 关于 PHP MySQL 长连接、连接池的一些探索
- 基于MysqlConnector/C++的数据库连接池的实现
- 使用TOMCAT5.5连接池连接mysql(解决Cannot create JDBC driver of class '' for connect URL 'null')
- mysql,redis客户端连接池和线程池的Linux C编程实现(★firecat推荐★)
- django-mysql的连接池