
開源 JDBC pool(存放空閒連線的buffer),比DBCP高效,更好處理高並發。
C3P0實現JNDI,優化資料庫連接時間,避免memory leak。
2013/12 更流行的連接池技術是 HikariCP,更高的性能、穩定性,並提供了比 C3P0 和 DBCP 更簡單的配置方式。
DBCP(DataBase Connection Pool)
建立在Jakarta Commons Pool連接池框架的基礎上,用於在應用程序中管理數據庫連接的創建、訪問和關閉。
- 支持連接池:創建一個連接池,管理創建和重用連接對象,避免反覆創建新連接。
- 支持多種數據庫:支持常見關系型數據庫如Oracle、MySQL、PostgreSQL等。
- 連接管理:管理空閒和活動連接,能夠清理無效和泄露的連接。
- 性能優化:池化和重用連接可以提高系統性能,減輕數據庫負載。
- 多線程安全:連接池和連接訪問支持多線程應用。
- 監控統計:提供大量連接池使用和性能的監控統計數據。
- 參數配置:各類超時、最大連接數等都可以通過參數進行調整。
- JMX管理:支持JMXface管理和監控接口。
C3P0 v.s. DBCP
DBCP
- Apache 開源基金會較早的數據庫連接池技術
- 較易用
C3P0
- 提供了比 DBCP 更多的功能, 如自動回收空閒連接, 自動重試失敗等
- 較高效
| 1
 | mysql -h 127.0.0.1 -u root -p
 | 
增加測資
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 
 | mysql> CREATE DATABASE ems;Query OK, 1 row affected (0.06 sec)
 
 mysql> use ems;
 Database changed
 mysql> create table mytesttable(
 ->   rollno int primary key auto_increment,
 ->   firstname varchar(50) not null,
 ->   lastname varchar(50) not null,
 ->   CreatedDTTM DATETIME DEFAULT NOW()
 -> );
 Query OK, 0 rows affected (0.21 sec)
 
 mysql> insert into mytesttable(rollno, firstname, lastname) values(1, 'Eric', 'Lu');
 Query OK, 1 row affected (0.08 sec)
 
 mysql> SHOW COLUMNS FROM mytesttable;
 +-------------+-------------+------+-----+-------------------+-------------------+
 | Field       | Type        | Null | Key | Default           | Extra             |
 +-------------+-------------+------+-----+-------------------+-------------------+
 | rollno      | int         | NO   | PRI | NULL              | auto_increment    |
 | firstname   | varchar(50) | NO   |     | NULL              |                   |
 | lastname    | varchar(50) | NO   |     | NULL              |                   |
 | CreatedDTTM | datetime    | YES  |     | CURRENT_TIMESTAMP | DEFAULT_GENERATED |
 +-------------+-------------+------+-----+-------------------+-------------------+
 4 rows in set (0.05 sec)
 
 mysql> select * from mytesttable;
 +--------+-----------+----------+---------------------+
 | rollno | firstname | lastname | CreatedDTTM         |
 +--------+-----------+----------+---------------------+
 |      1 | Eric      | Lu       | 2023-08-20 10:47:50 |
 +--------+-----------+----------+---------------------+
 1 row in set (0.01 sec)
 
 | 
Issue
資料庫設計高並發優化
“讀寫分離” (Read-Write Splitting) 是一種常見的資料庫優化策略,將資料庫的讀取(Read)和寫入(Write)操作分隔到不同的伺服器或伺服器集群上,從而提高整體的性能和伸縮性。