Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » SQL Anywhere 服务器 - SQL 参考 » 系统对象 » 系统过程 » 按字母顺排序的系统过程列表

 

sa_performance_diagnostics 系统过程

返回所有连接的请求计时信息的汇总(前提是数据库服务器启用了请求计时记录)。

语法

sa_performance_diagnostics( )

结果集
列名 数据类型 说明
Number INT 连接的 ID 号。
Name VARCHAR(255) 连接的名称。
Userid VARCHAR(255) 连接的用户 ID。
DBNumber INT 数据库的 ID 号。
LoginTime TIMESTAMP 建立连接的日期和时间。
TransactionStartTime TIMESTAMP 在执行 COMMIT 或 ROLLBACK 后首次修改数据库的时间,或为空字符串(如果自上次执行 COMMIT 或 ROLLBACK 后未对数据库进行任何修改)。
LastReqTime TIMESTAMP 指定连接的最后请求开始的时间。
ReqType VARCHAR(255) 最后请求的类型。
ReqStatus VARCHAR(255)

请求的状态。它可以是以下各值之一:

  • Idle   连接当前未处理请求。

  • Unscheduled   连接有工作要做并且正在等待工作线程。

  • BlockedIO   连接被阻塞,正在等待 I/O。

  • BlockedContention   连接被阻塞,正在等待访问共享数据库服务器数据结构。

  • BlockedLock   连接被阻塞,正在等待锁定的对象。

  • Executing   连接正在执行请求。

ReqTimeUnscheduled DOUBLE 等待调度所用的时间。
ReqTimeActive DOUBLE 等待处理请求所用的时间。
ReqTimeBlockIO DOUBLE 等待 I/O 完成所用的时间。
ReqTimeBlockLock DOUBLE 等待锁所用的时间。
ReqTimeBlockContention DOUBLE 等待原子访问所用的时间。
ReqCountUnscheduled INT 等待调度的次数。
ReqCountActive INT 处理的请求数。
ReqCountBlockIO INT 等待 I/O 完成的次数。
ReqCountBlockLock INT 等待锁的次数。
ReqCountBlockContention INT 等待原子访问的次数。
LastIdle INT 请求间隔时间数。
BlockedOn INT 如果没有阻塞当前连接,则该值为 0。如果阻塞了当前连接,则为由于锁定冲突而阻塞连接的连接号。
UncommitOp INT 未提交操作的数量。
CurrentProcedure VARCHAR(255) 连接当前正在执行的过程。如果该连接正在执行嵌套过程调用,则该名称为当前过程的名称。如果未在执行任何过程,则返回一个空字符串。
EventName VARCHAR(255) 在该连接运行事件处理程序情况下的相关事件的名称。否则,结果为 NULL。
CurrentLineNumber INT 连接正在执行的过程或复合语句的当前行号。可使用 CurrentProcedure 属性标识该过程。如果该行是来自客户端的复合语句的一部分,则返回一个空字符串。
LastStatement LONG VARCHAR 当前连接的最近预准备 SQL 语句。
LastPlanText LONG VARCHAR 在连接上执行的最后一个查询的详细文本计划。
AppInfo LONG VARCHAR 有关建立连接的客户端的信息。对于 HTTP 连接,这包括有关浏览器的信息。对于使用较旧版本 jConnect 或 Open Client 的连接,信息可能是不完整的。API 值可以是 DBLIB、ODBC、OLEDB 或 ADO.NET。
LockCount INT 连接所持有的锁的个数。
SnapshotCount INT 与连接关联的快照数。
注释

sa_performance_diagnostics 系统过程返回一个包含一组请求计时属性和统计信息的结果集(前提是已通知服务器搜集这些信息)。在调用 sa_performance_diagnostics 之前,必须在数据库服务器上打开请求计时信息的记录。要达到此目的,可在启动数据库服务器时指定 -zt 选项,也可执行以下内容:

CALL sa_server_option( 'RequestTiming','ON' );
权限

需要 DBA 权限

副作用

另请参见
示例

可以执行以下查询以标识花费长时间等待数据库服务器请求完成的连接。

SELECT  Number, Name,
      CAST( DATEDIFF( second, LoginTime, CURRENT TIMESTAMP ) AS DOUBLE ) AS T,
      ReqTimeActive / T AS PercentActive
FROM  dbo.sa_performance_diagnostics()
WHERE PercentActive > 10.0
ORDER BY PercentActive DESC;

以下示例查找当前正在执行且执行时间已超过 60 秒的所有请求:

SELECT  Number, Name,
      CAST( DATEDIFF( second, LastReqTime, CURRENT TIMESTAMP ) AS DOUBLE ) AS ReqTime
FROM  dbo.sa_performance_diagnostics()
WHERE ReqStatus <> 'IDLE' AND ReqTime > 60.0
ORDER BY ReqTime DESC;