2

我有一堆每隔几分钟运行一次的 java 程序。这些程序每隔几分钟就由一个脚本启动,不到一分钟就结束。它们中的大多数都是单线程的,并且要访问我使用的 MySQL DB:

DriverManager.getConnection()

他们只需要连接一次,然后执行一个查询。现在我正在向这个组添加一个新程序,它是多线程的,所有线程都需要同时访问数据库。我正在考虑为此使用数据库连接池(c3p0)。

我的问题是,由于所有这些程序共享一个用于访问数据库的通用 DAO,即使它们只需要一个连接,为单线程程序使用数据库连接池是否有开销?我打算将初始池大小设置为 1,将最小池大小设置为 1,将最大池大小设置为 10。

4

1 回答 1

2

连接池的主要目标是有一些现成的连接,而不是每次想要获得连接时打开和关闭。如果经常使用 DB,这种方法可以节省相当多的时间。

Apache DBCP是单线程的,但无论如何,如果您的应用程序经常使用 DB 连接,它会显着提高性能。

c3p0 是一个不错的选择,但要选择正确的连接池,请查看以下讨论:使用 JDBC 的连接池选项:DBCP 与 C3P0

于 2013-02-27T18:09:36.480 回答