我有一堆每隔几分钟运行一次的java程序。这些程序每隔几分钟由一个脚本启动,并在不到一分钟的时间内终止。他们中的大多数都是单线程的,并且我使用的是访问MySQL DB:
DriverManager.getConnection()
他们只需要连接一次,然后执行查询。 现在我要向这个组添加一个新程序,它是多线程的,并且所有线程都需要同时访问DB。我正在考虑使用数据库连接池(c3p0)。
我的问题是,由于所有这些程序共享一个用于访问数据库的公共DAO,即使它们只需要一个连接,是否需要为单线程程序使用数据库连接池的开销? 我打算将initialPool大小设置为1,将最小池大小设置为1,将最大池大小设置为10.
答案 0 :(得分:2)
连接池的主要目标是拥有一些即用型连接,而不是每次想要建立连接时打开和关闭。如果经常使用DB,这种方法可以节省足够的时间。
Apache DBCP是单线程的,但无论如何,如果您的应用程序经常使用数据库连接,它会显着提高性能。
c3p0是一个不错的选择,但是为了选择合适的连接池,请查看以下讨论:Connection pooling options with JDBC: DBCP vs C3P0