返回所有连接的请求计时信息的汇总(前提是数据库服务器启用了请求计时记录)。
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) |
请求的状态。它可以是以下各值之一:
|
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; |
![]() |
使用DocCommentXchange 讨论此页。
|
版权 © 2010, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.0 |