AJAX/JavaScript搜索性能优于Java/Oracle

AJAX/JavaScript search performance better than Java/Oracle

本文关键字:Java Oracle 性能 JavaScript 搜索 AJAX      更新时间:2024-04-29

我使用的是一个用Java编写的非常大的企业应用程序,它查询Oracle SQL数据库。我们在前端使用JavaScript,并一直在寻找提高应用程序性能的方法。

我们现在遇到的问题是,我们正在通过Java发送一个查询,结果产生39000条记录。这给服务器带来了很大的负载,并导致浏览器挂起。我应该提到的是,数据是相对静态的(每年只更改一次),我们可以使用xml映射或类似的东西(平面文件),因为我们知道每次返回的确切结果。

然而,查询仍然需要1.5-2分钟才能加载,这是不可接受的。我想看看是否有任何关于如何优化这个场景的建议,特别是如果使用JavaScript(或jQuery)和使用AJAX进行数据库连接可以更快地完成。或者,我们在处理这个问题时完全错了吗?

您想确定慢是否是由于:

  1. 在数据库中执行的查询
  2. 网络返回399条记录的速度较慢
  3. ajax完成后处理39k记录的javascript

如果您可以在sqlplus或toad中运行查询,这将同时消除web层和网络。如果速度较慢,请通过检查索引来调整查询。

如果添加了适当的索引后,查询仍然很慢,那么您可以预构建查询的结果并将结果存储在表中,也可以创建物化视图。

一旦sqlplus的查询执行良好,那么就将网络重新添加到等式中。从你的网络浏览器运行它,看看会增加什么开销。

如果它仍然很慢,那么您需要确定问题是调整数据的行为,还是在页面对数据进行处理(即通过javascript填充数据网格)后出现的。

如果速度慢是因为浏览器正在等待数据,那么你需要确保它只被提取一次。您可以通过在ajax请求中设置缓存头来缓存1年的结果。也可以将结果存储在localstorage中。

如果速度慢是由于浏览器处理399行(即将数据移动到数据网格中),那么您有几个选项。

  1. 找到更好的方法或库
  2. 使用分页

您可能会发现这些方面都存在性能问题。最有可能的是,查询只需要进行调优,通过添加索引或预查询数据并存储数据就可以解决问题。

另一件需要考虑的事情是,如果您真的一次需要399行。如果可以的话,在数据库级别进行分页,这样每页返回100行。