起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 252|回复: 4

执行的SQL发生超时,如何关闭仍在执行的任务

[复制链接]
发表于 2009-11-6 19:29:23 | 显示全部楼层 |阅读模式
因各方面的原因,假设这条SQL执行时间很长,系统就会提示超时,然后系统可以再操作。但是从服务器上看,ORACLE仍然占着很大的CPU,并且这个时候再查询其他SQL,整体速度就会降慢,TOMCAT也会在增长,如果关掉TOMCAT,ORACLE占用CPU会马上恢复,如果不关掉TOMCAT,那么上述说的问题会一直持续很长一段时间。请问如何做可以将这个任务清理掉,否则这一情况会严重影响性能。
回复

使用道具 举报

发表于 2009-11-7 10:30:44 | 显示全部楼层
sql已经发送到服务端执行了,数据库会一直执行下去,报告的超时是客户端返回的错误。
还有可以看看能不能在客户端通过代码捕获这个异常,如果能可以把它放到事务里面,然后出现异常的时候让事务回滚

像这种执行速度超慢的sql找到看能不能想办法优化一下,或者索引什么是否正确
或者把做成存储过程放到服务端去执行。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-11-11 11:00:47 | 显示全部楼层

请问 在客服端超时异常 代码在哪?

可以告知位置吗?
运用事务 回滚好像不行。
是否事务写错,请评点下。
  aTransactionHandle:= sQuery.Connection.Transaction.Start(False);
     try
TSALES_RECORD_INFO(InfoBroker.Info).DataSetSALES_RECORD.UserFilter:=sFilter;
TSALES_RECORD_INFO(InfoBroker.Info).DataSetSALES_RECORD.Open;
sQuery.Connection.Transaction.Commit(aTransactionHandle);
     except
        on e:exception do
        begin  sQuery.Connection.Transaction.Rollback(aTransactionHandle);
            StatusBar.Caption:='查询出现异常,请重新查询!';
            StatusBar.Update;
Jsdialogs.ShowError(e.Message+#13#10+'查询出现异常,请重新查询!','异常');
            SysUtils.Abort;
        end;
     end;
回复 支持 反对

使用道具 举报

发表于 2009-11-11 11:57:35 | 显示全部楼层
你现在时在sQuery启动了事物,和这个数据集:TSALES_RECORD_INFO(InfoBroker.Info).DataSetSALES_RECORD 没有关系呢

看一下这个帖子
回复 支持 反对

使用道具 举报

发表于 2009-11-11 11:58:41 | 显示全部楼层
还有看一下超时的原因是什么?是不是取过来的数据量太大了?看看能不能设置索引啥的加快查询速度?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-14 20:49 , Processed in 0.041536 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表