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