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

标签 java javascript ajax oracle performance

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

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

但是,该查询的加载时间仍为 1.5 - 2 分钟,这是 Not Acceptable 。我想看看是否有关于如何优化此场景的任何建议,特别是如果可以使用 JavaScript(或 jQuery)并使用 AJAX 进行数据库连接更快地完成。或者,我们对这个问题的处理完全错误吗?

最佳答案

您想要确定速度缓慢是否是由于:

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

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

如果添加适当的索引后,查询仍然很慢,那么您可以预先构建查询的结果并将结果存储在表中,或者您可以创建一个物化 View 。

一旦您的 sqlplus 查询运行良好,就可以将网络重新添加到方程中。从网络浏览器运行它并查看增加了哪些开销。

如果仍然很慢,那么您需要确定问题是否出在 ajax 数据操作上,或者是否在页面对数据执行某些操作(即通过 JavaScript 填充数据网格)之后发生缓慢。

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

如果速度缓慢是由于浏览器处理 39k 行(即将数据移动到数据网格中)造成的,那么您有几个选择。

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

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

要考虑的另一件事是您是否确实一次需要 39k 行。如果可以,请在数据库级别进行分页,以便每页返回 100 行。

关于java - AJAX/JavaScript 搜索性能优于 Java/Oracle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28696330/

相关文章:

java - 从另一个 @Transactional 注解方法调用 @Transactional 注解方法

javascript - 如何使用正则表达式从句子中删除特定字符串?

javascript - 如何确保此 AJAX(登录)请求的安全

javascript "strict"和实例化全局模块

javascript - 同步发出多个ajax请求

java - Flex mxmlc 加载 JVM windows 7 64 位时出错

java - 存储压缩图像

java - 对 ObservableList 进行排序时抛出的更改通知数

ajax - jQuery .append(html) 命令附加错误

javascript - 使用 Ajax 返回加载的内容时功能不起作用