開源 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
|
增加測資
1 2 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)操作分隔到不同的伺服器或伺服器集群上,從而提高整體的性能和伸縮性。