有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

了解java rmi的良好实践

我有一份RMI申请, 基本上,来自客户机的每个请求都会创建一个到数据库的新连接(在服务器端),生成一个SQL查询,并将数据转换为一个可序列化的类,然后发送回客户机

该应用的用户群不断扩大,完成请求花费了很长时间。以前的程序员提出的解决方案是创建一个从服务器到数据库的固定大小的连接池,每个客户机的请求都使用最旧的(最近使用最少的)来运行SQL查询。 我的问题是:解决这样一个问题的正确方法是什么


共 (1) 个答案

  1. # 1 楼答案

    我想说,汇集数据库连接已经是一个重要的步骤,因为建立连接是昂贵的。然而,我不会实现自己的池,而是使用现有的、经过验证的池数据源实现,比如DBCP或C3P0。它们有许多有用的功能,如大小可变、自动连接检查等

    如果查询本身占用的时间太长,那么优化将比这更复杂。各种方法都是可能的,取决于具体情况,例如:

    • 是否只有一个SQL查询,总是一样的,就像你的问题暗示的那样
    • 数据库是只读的吗
    • 如果不是,修改是在同一应用程序内进行的还是在外部进行的
    • 等等

    减少请求时间的可能方法(我现在可以想到):

    • 在java应用程序中缓存结果(但这是一个庞大的主题…)
    • SQL请求的优化
    • 优化数据库模式,使用索引或更深入地重构表结构
    • 将发送回客户端的数据量降至最低(以防网络成为瓶颈)

    我希望这有帮助。我们真的需要更多关于用例的细节来给你一个更好的答案