了解java rmi的良好实践

时间:2013-04-09 10:16:56

标签: java rmi

我有一个RMI应用程序, 基本上来自客户端的每个请求,在数据库中创建一个新的连接(在服务器端),在SQL查询中将数据转换为可发送回客户端的可序列化类。

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

1 个答案:

答案 0 :(得分:2)

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

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

  • 是否只有一个SQL查询,总是相同的,因为您的问题似乎意味着什么?
  • 数据库是只读的吗?
  • 如果没有,是在同一个应用程序内部还是在外部进行修改?
  • 等...

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

  • 在java应用程序中缓存结果(但这是一个广泛的主题......)
  • 优化SQL请求
  • 使用索引或更深入地重构表结构来优化数据库模式
  • 将发送回客户端的数据量减少到最低限度(如果网络是瓶颈)

我希望这会有所帮助。我们真的需要有关用例的更多细节,以便为您提供更好的答案。