【发布时间】:2015-11-28 12:46:55
【问题描述】:
所有,我有一个网页,它从 4 个 Oracle 数据库中的 4-6 个表中加载数据,每个需要大约 10 个模式。我设置的是页面顶部的要求,例如:
<?php
require_once('src/connects_client1.php');
require_once('src/connects_client2.php');
require_once('src/connects_client3.php');
require_once('src/connects_client4.php');
?>
每个文件都包含一个连接字符串,例如:
$connClient = oci_pconnect("Login", "Password", "//database:1521");
以及一系列查询和执行如:
$dailystatusClientSCHEMA = oci_parse($connClient, 'select * from OPS$SCHEMA.DAILY_STATUS order by table_name');
oci_execute($dailystatusClientSCHEMA);
这是基于 Jquery 的树视图的一部分,其中包含一系列无序列表和一个 PHP foreach 循环,该循环为查询结果适当地打印每一行数据。
一些结果集包含超过一千行数据。这有效,并以可用的格式显示数据。
问题是加载需要 1 分 52 秒。公司的最终用户认为这太长了,坦率地说我也认为太长了。我不是网络开发人员,但这个项目属于我们的团队是最合乎逻辑的,所以我在这里。
有什么方法可以强制所有查询以更同步的方式加载,以便更快地返回数据?这是一个非常快的 Exadata 环境,所以我不认为数据库存在任何瓶颈,并且 Web 服务器在任何给定时间负载都很轻,所以我认为那里没有限制,只是在我的构建方式上这个页面。
我非常感谢可能提供的任何解决方案。
谢谢。
【问题讨论】:
-
也许可以对脚本的不同部分进行基准测试,从查询到页面中的任何其他内容,以找出瓶颈所在。它可能是查询、拉取结果集,甚至只是等待 jquery 数据表加载数据。查询数据,将其保存到会话并通过客户端通过 ajax 进行分页可能会更快。不管怎样,第一件事是使用微时间进行基准测试,以找出导致瓶颈的原因并专注于此。
标签: php jquery html oracle oracle-call-interface