如何在打开JDBC MYSQL连接时节省时间

时间:2011-11-22 09:11:20

标签: java mysql jdbc

我有一个非常简短的Java应用程序,只需打开与远程MySQL数据库的连接,读取一些数据,打印并退出。应用程序中最耗时的部分是数据库连接。

目前我只有一个线程,我唯一关心的是节省打开连接的时间。

我想到了几种让它更快的方法,但事实证明它们并没有帮助:

  • 连接池 - 没有帮助,因为池仅在单次运行应用程序期间存在。当应用程序终止时,池就消失了,当我重新运行应用程序时,我必须重新打开池中的所有连接。
  • mysql-proxy - 仅连接到本地服务器:mysql-proxy for a remote MySQL server
  • TCP / IP服务器 - 我想拿着一个本地TCP / IP服务器来保持持久的开放连接,并根据请求将其发送到TCP / IP客户端。但是,Connection对象无法序列化,因此我无法将Connection对象从客户端传递到服务器。

还有其他选择吗?

4 个答案:

答案 0 :(得分:1)

通常,与DB的连接是最耗时的操作。如果要启动和停止应用程序,那么您几乎无法做到。

在Web服务器中使用连接池并通过运行使用JSON与Web服务器通信的应用程序来调用它可能是一种选择。

答案 1 :(得分:1)

你说你有一个非常短的应用程序,所以如果你将数据库逻辑放入你的第三个选项可能会工作"选项3 TCP / IP服务器"然后将结果转发给您的连接客户端。这是典型的应用程序服务器模式。

答案 2 :(得分:1)

Marc B在评论中提到的关于网络查找的另一件事https://stackoverflow.com/q/3641155/1055715

答案 3 :(得分:0)

事实证明,最好的解决方案是使用mysql-proxy和一个处理连接池的脚本(前两个选项的组合)。我在这里找到了一个这样的脚本 http://forge.mysql.com/tools/tool.php?id=151

它可能是为旧版本的mysql-proxy编写的,所以我不得不修复它(如果有人需要修复版本 - 写信给我)。

它就像一个魅力 - 我运行与以前完全相同的应用程序,唯一的变化是在连接字符串中:而不是连接到“qa-srv:3308”(远程服务器)我连接到“127.0.0.1 :4040“(代理服务器)。