【问题标题】:sybase query plan OPEN CURSORsybase 查询计划 OPEN CURSOR
【发布时间】:2017-07-28 21:39:31
【问题描述】:

我们的系统被另一个访问,它从一个视图中选择一列的MAX(),该视图连接了几个大表,但只返回几千行。

他们的查询很慢,但是当我们尝试sp_showplan 时,只有“OPEN CURSOR”可见。

必须有一个连接顺序和索引使用(某处必须有一个完整的计划),但我们看不到它。

监视器表的出现只是为了存储节目计划。

有人有什么想法吗?也许是某种 dbcc?

【问题讨论】:

    标签: sybase


    【解决方案1】:

    那里安装了 MDA 表。 如果是,您是否检查了表 monSysPlanText。

    查看查询计划的其他方式,请在下方使用

    设置节目计划 写查询 去

    还有其他选项提供详细信息 喜欢:-

    设置统计时间 设置统计信息 设置统计plancost on

    【讨论】:

    • 谢谢,MDA 已开启,但我需要 DBA 来启用 sysplan 监控。唯一的事情是我认为这包含与 sp_showplan 将显示的相同,但我会尝试。
    • 设置命令 - 问题是,这是另一个连接到我们的系统。它们是 Oracle 网关的另一端,所以我假设它们无法做到这一点。即使网关会通过“SET”命令,我认为它也会丢弃随计划发送的 Sybase 服务器消息。但仍然 - 为什么不尝试确认呢?我会要求他们这样做。
    【解决方案2】:

    听起来可能是客户端 JDBC/ODBC 设置启用了“光标”而不是直接启用,后者将光标包裹在所有查询周围。

    在调查方面,您还可以在该 spid 处于活动状态时检查系统锁,并根据其对象 ID 查看正在使用哪些锁,这将帮助您缩小正在使用的任何表和/或特定索引的范围。

    如果您确实启用了 MDA,那么 monOpenObjectActivity 和 monProcessActivity 也会有所帮助。

    【讨论】:

    • 非常感谢 Rich Campbell - 我不知道 jdbc 'cursor' 设置,听起来确实如此。我知道来自 syslocks 的表,但从来不知道查询计划 - 几年过去了!
    猜你喜欢
    • 2014-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多