【发布时间】:2013-04-09 10:16:56
【问题描述】:
我有一个 RMI 应用程序, 基本上来自客户端的每个请求,都会创建一个到数据库的新连接(在服务器端),执行 SQL 查询并将数据转换为可序列化的类,然后发送回客户端。
应用程序的用户群不断增长,请求需要很长时间才能完成。以前的程序员想出的解决方案是创建一个从服务器到数据库的固定大小的连接池,每个客户端的请求都使用最旧的(最近最少使用的)来运行 SQL 查询。 我的问题是:解决此类问题的正确方法是什么?
【问题讨论】:
我有一个 RMI 应用程序, 基本上来自客户端的每个请求,都会创建一个到数据库的新连接(在服务器端),执行 SQL 查询并将数据转换为可序列化的类,然后发送回客户端。
应用程序的用户群不断增长,请求需要很长时间才能完成。以前的程序员想出的解决方案是创建一个从服务器到数据库的固定大小的连接池,每个客户端的请求都使用最旧的(最近最少使用的)来运行 SQL 查询。 我的问题是:解决此类问题的正确方法是什么?
【问题讨论】:
我想说,汇集数据库连接已经是一个重要的步骤,因为建立连接的成本很高。但是,我不会使用我自己的池,而是使用现有且经过验证的池化数据源实现,例如 DBCP 或 C3P0。它们具有许多有用的功能,例如可变大小、自动连接检查等...
如果是查询本身占用的时间太长,那么优化会比这更复杂。各种方法都是可能的,具体取决于具体情况,例如:
减少请求时间的可能方法(我现在能想到的):
我希望这会有所帮助。我们确实需要更多有关用例的详细信息,以便为您提供更好的答案。
【讨论】: