就是这么简单:在SQL Developer连接到Oracle 11g的几秒钟内运行的查询在SSRS 2008 R2中需要15-25分钟.我还没有尝试过其他版本的SSRS.到目前为止,我正在从VS 2008执行所有报告执行.
我正在使用OLE DB提供程序"OraOLEDB.Oracle.1",它在过去似乎比使用Oracle提供程序给我更好的结果.
这是我到目前为止所能确定的:
•延迟是在DataSet执行阶段,与结果集或渲染时间无关.(通过直接从我插入的表中选择相同的行集来证明.)
•SSRS本身并未挂断.它确实在等待延迟所在的Oracle(通过从Oracle端终止数据库会话来证明,这导致SSRS中关于被杀死的会话的快速错误).
•我尝试使用以下形式的参数进行直接查询:参数.我的查询的早期版本更简单,可以直接查询,但似乎过了一定的复杂性,查询将从SSRS开始永远.
•然后我切换到执行将查询结果插入表或全局临时表的SP.这有点帮助,让我比直接查询更远,但同样,似乎增加的查询复杂性或长度最终也破坏了这种方法.注意:运行填充表的SP是可行的,因为在DataSource选项中选中了"使用单个事务"选项,然后按照它们在rdl文件中的出现顺序运行DataSet.只要满足所有参数,仍然会运行不返回Fields的DataSet.
•我刚刚尝试了一个表返回函数,这仍然没有改进,即使在SQL Developer中使用文字参数的直接调用在1-5秒内返回.
•有问题的数据库没有统计数据.它是供应商创建的产品的一部分,我们没有时间或管理层支持来创建/更新统计数据.我使用DYNAMIC_SAMPLING提示来动态计算统计数据并获得更好的执行计划:没有统计数据,基于成本的优化器很少使用LOOP连接而不是HASH连接,导致类似的多分钟执行时间.因此,我提出了查询提示来强制连接顺序,并使其使用策略散列连接,将执行时间缩短到几秒钟.我没有回去尝试使用这些执行提示直接在SSRS中查询.
•我从我们的Oracle DBA那里得到了一些帮助,他们设置了一个跟踪(或者等同于Oracle的东西)并且他能够看到正在运行的东西,但到目前为止他还没有找到任何有用的东西.不幸的是,他的时间有限,我们无法真正深入了解服务器端的执行情况.我没有经验可以快速完成这项工作,也没有时间自己研究如何做到这一点.关于如何确定发生了什么的建议将不胜感激.
我唯一的假设是:
•查询以某种方式获得了糟糕的执行计划.例如,当存在数万个"左"或外环行而不是仅仅几百个时,不正确地使用LOOP连接而不是HASH连接.
•SSRS可以将参数提交为nvarchar(4000)或其他东西而不是合理的东西,并且由于Oracle SP和函数参数没有长度规范但是从查询调用中获取它们的执行长度,那么参数嗅探等一些过程就是弄乱执行计划,就像前一点一样.
•查询以某种方式被SSRS /提供者重写.我使用多值参数,但不是这样:参数作为表达式Join(参数!MultiValuedParameter.Value,",")提交,因此它不需要任何重写.只是一个简单的绑定和提交.我不知道在SP和函数调用中这是怎么回事,但天哪,还有什么呢?
我意识到这是一个非常复杂和冗长的查询,但它完全符合我的需要.它会在1-5秒内运行,具体取决于要求的数据量.造成这种复杂性的一些原因是:
无论如何,所以这里是查询,SP版本(虽然我认为它不会有太大帮助).
create or replace
PROCEDURE VendorInvoiceSummary (
FromDate IN date,
ToDate IN date,
CostCenterList IN varchar2,
IncludeWeekly IN varchar2,
ComparisonMonths IN number,
IncludeYTD IN varchar2
)
AS
BEGIN
INSERT INTO InvoiceSummary (Mo, CostCenter, Vendor, VendorName, Section, TimeUnit, Amt)
SELECT
Mo,
CostCenter,
Vendor,
VendorName,
Section,
TimeUnit,
Amt …Run Code Online (Sandbox Code Playgroud) 我刚刚测试了一个我正在工作的程序,当我用-g编译它时,我发现它的执行速度提高了3μs(一个统计上显着的变化).这对我来说毫无意义 - 我认为-g标志不应该影响程序执行,即使它确实这样做也会使它运行得更慢,而不是更快.
谁能告诉我为什么会这样?它是否改变了程序的执行流程?我没有使用-O进行编译,因为我需要它完全按照写入执行,但是如果-g可以通过改变指令顺序以某种方式使它运行得更快我显然应该使用它.
所以我需要确切知道-g标志对程序的更改.
编辑:我运行的测试越多,t值越大(=差异变得越有统计意义).这绝对不是测量误差 - 事情正在发生.
我有一个2000页的网站,我想使用file_get_html()函数和正则表达式遍历每个页面以生成站点地图.
显然,这不能在一个服务器端执行中完成,因为由于最大执行时间,它将耗尽时间.我想它需要执行较小的操作,将进度保存到数据库,然后排队下一个任务.有什么建议?
我有一个页面,允许用户上传图像.
当用户尝试上传较大的图像时,它返回500错误.
以下代码......
<?php echo ini_get("upload_max_filesize");
echo ini_get("post_max_size");
echo ini_get("max_input_time");
echo ini_get("max_execution_time");
?>
Run Code Online (Sandbox Code Playgroud)
...的回报:
100M
100M
60
3600
Run Code Online (Sandbox Code Playgroud)
我猜测这是导致问题的最大输入时间,因为我已经测试了100mb以下的文件,但上传时间超过60秒.
我没有访问我的主机到php.ini文件,所以我可以覆盖这些设置吗?我已经尝试添加一个htaccess文件,但我不确定我是否把它放在正确的位置.
我是D语言的新手,需要测量算法的执行时间.我有什么选择?是否已经有一些内置的解决方案?我在网上找不到任何结论.
目前,我得到我的程序的执行壁上时间秒致电:
time_t startTime = time(NULL);
//section of code
time_t endTime = time(NULL);
double duration = difftime(endTime, startTime);
Run Code Online (Sandbox Code Playgroud)
是否有可能以毫秒为单位获得挂壁时间?如果是这样的话?
可能重复:
如何在mysql中以毫秒或微秒为单位获取加载时间
我正在比较一些不同的方法来直接在控制台上使用mysql获取一些数据,使用SQL_NO_CACHE选项确保mysql每次都保持运行完整的查询.Mysql给我的执行时间以秒为单位,小数点后两位.我真的希望以毫秒(最好是一个或两个小数位)得到结果,以便更好地了解改进(或缺少).我可以在mysql中设置一个选项来实现这个目的吗?
谢谢,最大
我想更改PHP脚本的最长执行时间.在我试过的脚本中
ini_set("max_execution_time", "1000");
Run Code Online (Sandbox Code Playgroud)
和
set_time_limit(1000);
Run Code Online (Sandbox Code Playgroud)
一起和分开.
我还将此行添加到.htaccess:
php_value max_execution_time 1000
Run Code Online (Sandbox Code Playgroud)
php.ini已关闭安全模式,Apache服务器具有该标志AllowOverride All.我该怎么做才能让服务器允许更长的执行时间?
我正在尝试在集群上运行NetLogo(java仿真框架)模拟,作为大型实验的一部分.我对(相对)简单模拟的看似庞大的内存要求感到惊讶.在集群上,它会为小于"-Xmx2500M"的任何内容抛出"java.lang.OutOfMemoryError:Java堆空间"异常.单次执行需要5个小时才能运行.我在我的Mac(iMac和MacBook Pro)上运行了相同的实验,并且他们在不到一个小时内执行,"-Xmx1024"没有出错.群集作业需要"-XX:MaxPermSize = 250M",而在我的Mac上,不需要增加高于默认值.我运行相同的代码,相同的输入,在所有情况下使用完全相同的jar.
在每种情况下使用64位JVM(据我所知,这些JVM非常相似):
<on the cluster>
$ java -version
java version "1.6.0_26"
Java(TM) SE Runtime Environment (build 1.6.0_26-b03)
Java HotSpot(TM) 64-Bit Server VM (build 20.1-b02, mixed mode)
<on my macs>
$ java -version
java version "1.6.0_31"
Java(TM) SE Runtime Environment (build 1.6.0_31-b04-415-10M3646)
Java HotSpot(TM) 64-Bit Server VM (build 20.6-b01-415, mixed mode)
Run Code Online (Sandbox Code Playgroud)
我在所有情况下都运行Client JVM(最初在集群上使用Server,切换到客户端没有任何区别).我尝试使用java 7在集群上执行,同样巨大的内存和执行时间问题.
我完全感到困惑,我所说过的任何人都无法解释这一点.以前有人遇到过这个吗?任何帮助非常感谢!