AJAX/JavaScript搜索性能优于Java/Oracle
AJAX/JavaScript search performance better than Java/Oracle
我使用的是一个用Java编写的非常大的企业应用程序,它查询Oracle SQL数据库。我们在前端使用JavaScript,并一直在寻找提高应用程序性能的方法。
我们现在遇到的问题是,我们正在通过Java发送一个查询,结果产生39000条记录。这给服务器带来了很大的负载,并导致浏览器挂起。我应该提到的是,数据是相对静态的(每年只更改一次),我们可以使用xml映射或类似的东西(平面文件),因为我们知道每次返回的确切结果。
然而,查询仍然需要1.5-2分钟才能加载,这是不可接受的。我想看看是否有任何关于如何优化这个场景的建议,特别是如果使用JavaScript(或jQuery)和使用AJAX进行数据库连接可以更快地完成。或者,我们在处理这个问题时完全错了吗?
您想确定慢是否是由于:
- 在数据库中执行的查询
- 网络返回399条记录的速度较慢
- ajax完成后处理39k记录的javascript
如果您可以在sqlplus或toad中运行查询,这将同时消除web层和网络。如果速度较慢,请通过检查索引来调整查询。
如果添加了适当的索引后,查询仍然很慢,那么您可以预构建查询的结果并将结果存储在表中,也可以创建物化视图。
一旦sqlplus的查询执行良好,那么就将网络重新添加到等式中。从你的网络浏览器运行它,看看会增加什么开销。
如果它仍然很慢,那么您需要确定问题是调整数据的行为,还是在页面对数据进行处理(即通过javascript填充数据网格)后出现的。
如果速度慢是因为浏览器正在等待数据,那么你需要确保它只被提取一次。您可以通过在ajax请求中设置缓存头来缓存1年的结果。也可以将结果存储在localstorage
中。
如果速度慢是由于浏览器处理399行(即将数据移动到数据网格中),那么您有几个选项。
- 找到更好的方法或库
- 使用分页
您可能会发现这些方面都存在性能问题。最有可能的是,查询只需要进行调优,通过添加索引或预查询数据并存储数据就可以解决问题。
另一件需要考虑的事情是,如果您真的一次需要399行。如果可以的话,在数据库级别进行分页,这样每页返回100行。
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- 借助asp.net验证或java脚本对多个文本进行验证
- java.net和javascript之间正则表达式的差异
- 如何从Java/scala调用js美化程序
- 如何使用json将对象列表从java转换为javascript
- Java脚本时间添加
- WebDriverException:tinyMCE未在selenium Web driver java中定义
- 如何将字符串值从php页面发送到java脚本页面
- 如何使用Spring MVC将Facebook返回的响应数据保存在Java类中
- 如何轻松地将服务器端变量从Java代码转移到客户端代码
- DOM事件通过JSON转换为java
- 在 Java 中的 JavaScript 函数中插入 Wicket 值
- JSON分析错误:Java中AJAX、Javascript和Servlet的意外EOF
- java脚本在Chrome和其他浏览器中对LocaleTimeString的不同行为
- AJAX/JavaScript搜索性能优于Java/Oracle
- 在java脚本中调用Java方法 - Oracle ADF
- 在java脚本的帮助下,在日历中显示背景日期应该是红色的,我也从oracle数据库中获取数据
- Visual Studio 2013 Enterprise:Oracle Java SDK需要此软件的最新版本
- 使用Java、JavaScript、Oracle和Windows计算器进行乘法运算
- 我可以在oracle的JDK7 JSR223 JavaScript引擎中扩展Java类吗?