3

我有一个问题,我想我会分解成最简单的。LAMP 堆栈上有两个应用程序,一个 PHP 和另一个 Java,它们做的唯一且完全相同的事情:运行一个简单的查询:

SELECT * FROM test

PHP 执行总共需要30 毫秒

Java 执行 总共需要230 毫秒

在本地 MySQL 客户端上运行查询总共需要10-15 毫秒

Java 每次大约需要大约 200 毫秒才能建立与数据库的连接。我知道 PHP 使用某种内置的连接池,因此它不需要每次都建立新的连接,因此只需要30 毫秒

在 Java 上是否有同样的可能?到目前为止,我未能实现这一目标。我尝试使用 Apache Commons DBCP 连接池,完全没有变化,仍然需要相同的时间连接到数据库。

更新:这是一个单独的问题,我试图让连接池在 Java 上工作,对于那些要求代码示例的人:Java MySQL 连接池不起作用

4

1 回答 1

5

您误解了连接池的概念和目的。

连接池旨在维护单个(Java 虚拟)机器(通常是应用程序服务器)上的(一组)连接。目标是允许同一台机器上的多个线程实质上共享它们与数据库服务器的连接,而无需在每次需要查询数据库时打开一个。

独立应用程序无法共享连接,因为它们在不同的 Java 虚拟机上运行,​​甚至可能在不同的物理机上运行。

如果您有多个线程同时访问数据库,那么连接池将有助于您的独立应用程序。

try...catch但是,您仍然可以通过将您的测试(您的内部代码)包装在一个循环中并迭代几次来衡量连接池的好处。在第一次迭代中,需要打开连接。不要忘记释放连接(调用Con.close()),然后它将在下一次迭代中重用。

于 2013-08-07T15:15:26.177 回答