ITPub博客

首页 > 数据库 > Oracle > 一个不多见的SQL挂起问题

一个不多见的SQL挂起问题

原创 Oracle 作者:mcszycc 时间:2019-01-24 11:38:54 1 删除 编辑

    开发人员说前台用户反映操作变慢,要求看一看数据库,一查,没有活动会话在执行SQL,没有锁或阻塞现象,但是,有一台应用服务器的连接比初始化增加了一倍,另外,SQL monitor显示一个SQL处于executing状态,但执行时间(ela_time)却只有21秒,而SQL开始时间已经超过半小时了;

    从SQL monitor报告看,sql的持续时间在增加,但执行时间却不变,SQL很简单,是一个导出语句,但没有加条件,所以最终将查询364万数据,速度并不慢;

    这种现象还真是不常见,一般的要么是SQL慢一直在执行,要么就是有阻塞,这个看起来,DB没问题,但会话在增加,前台慢的情况确实存在;

    结合现象,个人认为,源头是因为导出大量的数据,而实际上oracle是分页fetch的,即执行第一次取记录给到应用服务器之后,可能是数据太大,应用服务器端出了异常,结果代码跑不下去了(异常处理不到位),这样就把这个SQL晾在这里了,既不执行,也不终止,而前端用户发现没有发映,又继续发起请求,但这些请求在连接了数据库之后(增加了会话连接),但又因为有前面的任务没有完成,又处于应用层排队等待的状态(DB层状态空闲);

    所以,真正的问题是应用的代码端,对导出的设计及异常处理考虑不周,让他们去检查代码,确实发现了BUG。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/13365316/viewspace-2564642/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2014-07-22

  • 博文量
    41
  • 访问量
    68637