如果有任何 Sybase ASE 专家,我想知道是否有办法让 Sybase 跟踪它收到的所有查询。
我目前正在运行一个程序,该程序通常在启动 7 小时后开始显示一些奇怪的行为。我想知道此时 Sybase 正在做什么,以便我可以解决问题。
我正在使用 Sybase ASE 15.5。由于某些奇怪的原因,我的监控服务器无法启动。
是的,有几种方法可以跟踪Sybase 收到的所有查询。
但是,鉴于您的问题的第二部分,据我了解,您需要 (1) 了解您的查询在做什么 (2) 在其他活动 spid 的上下文中监视您的活动 spid 并且......如果这还不够,然后(3)监控服务器;不是trace和所有查询。因此,我将深入讨论并推迟响应 Sybase 中可用的跟踪元素。
您与 ASE 的连接是一个服务器进程 ID,或 spid。
SET SHOWPLAN ON 和 SET NOEXEC ON,然后执行你的查询。这将使您能够很好地了解您的 SQL 在幕后实际上在做什么。这是一项基本要求,每个开发人员都应该熟悉并在测试之前提出要求。每当感觉查询速度很慢时,请始终检查正在执行的 I/O:SET STATISTICS IO ON。
sp_who; sp_lock; 并观察您的 spid 滴答作响、挂起、等待锁定、阻塞、哪些其他 spid 正在阻止它等等。这是每个开发人员应该一直使用的基本设置。
sp_sysmon 监视(整个)服务器。它可以以两种方式使用:作为持续监控工具,例如获取一整小时的统计数据,这是服务器配置更改的基础;并作为快照,例如。当您的进程正在运行和未运行时,抓取服务器的 5 分钟快照,并检查差异。通常这适用于有经验的 DBA,而不是开发人员,并且您需要 sa_role。
这一切都在手册中,包括在线和PDF。
七个小时是一个很长的时间,所以你必须使用游标或类似的,并且处理单行而不是集合。检查在 7 小时后进行的常规夜间批处理作业(转储、更新统计信息、重组);其中一些持有表锁。当然,如果服务器在 Windoze 上运行,各种奇怪的事情,从内存泄漏向上,都是标准票价;至少每周反弹一次。
按照这种处理负担的顺序,您应该密切关注您的事务日志和 tempdb 的使用情况。