Lunski's Clutter

This is a place to put my clutters, no matter you like it or not, welcome here.

0%

C3P0

開源 JDBC pool(存放空閒連線的buffer),比DBCP高效,更好處理高並發。

C3P0實現JNDI,優化資料庫連接時間,避免memory leak。

2013/12 更流行的連接池技術是 HikariCP,更高的性能、穩定性,並提供了比 C3P0 和 DBCP 更簡單的配置方式。

DBCP(DataBase Connection Pool)

建立在Jakarta Commons Pool連接池框架的基礎上,用於在應用程序中管理數據庫連接的創建、訪問和關閉。

  1. 支持連接池:創建一個連接池,管理創建和重用連接對象,避免反覆創建新連接。
  2. 支持多種數據庫:支持常見關系型數據庫如Oracle、MySQL、PostgreSQL等。
  3. 連接管理:管理空閒和活動連接,能夠清理無效和泄露的連接。
  4. 性能優化:池化和重用連接可以提高系統性能,減輕數據庫負載。
  5. 多線程安全:連接池和連接訪問支持多線程應用。
  6. 監控統計:提供大量連接池使用和性能的監控統計數據。
  7. 參數配置:各類超時、最大連接數等都可以通過參數進行調整。
  8. JMX管理:支持JMXface管理和監控接口。

C3P0 v.s. DBCP

DBCP

  • Apache 開源基金會較早的數據庫連接池技術
  • 較易用

C3P0

  • 提供了比 DBCP 更多的功能, 如自動回收空閒連接, 自動重試失敗等
  • 較高效

C3P0 利用上次的mysql image 建置

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

C3P0使用

資料庫設計高並發優化

“讀寫分離” (Read-Write Splitting) 是一種常見的資料庫優化策略,將資料庫的讀取(Read)和寫入(Write)操作分隔到不同的伺服器或伺服器集群上,從而提高整體的性能和伸縮性。


如果你覺得這篇文章很棒,請你不吝點讚 (゚∀゚)

Welcome to my other publishing channels