语法按命令区分,因为许多类型都有其自己的参数。以下代码段先显示整个存储过程的语法,再显示每个命令类型接口的语法。
sp_monitor [[connection | statement], [cpu | diskio | elapsed time]]
[event, [<spid> ]]
[<procedure>, [<dbname>, [<procname>[, summary | detail]]]]
[enable] [disable]
[help],
[deadlock][procstack]
connection
显示各个连接上的信息。connection 使用以下监控表:
statement
显示各个语句上的信息。statement 使用以下监控表:
cpu | diskio | elapsed time
这些参数用于对 sp_monitor connection 或 sp_monitor statement 的输出排序。
event
有三种可能的显示内容。如果指定:
<spid>
允许获取有关特定任务的 event 信息,方法是输入它的 <spid>。必须在引号内指定 的数值。</p>
<p></p>
<p> 显示有关存储过程的统计信息:</p>
<p> ProcName</p>
<p>正在被监控的存储过程。</p>
<p> </p>
<p> DBNAME</p>
<p>存储过程所在的数据库。</p>
<p> </p>
<p> NumExecs</p>
<p>此特定存储过程大约执行的次数。</p>
<p> </p>
<p> AvgCPUTime</p>
<p>执行存储过程所需的平均 CPU 时间。</p>
<p> </p>
<p>AvgPhysicalReads</p>
<p>存储过程执行的平均磁盘读取数。</p>
<p> </p>
<p>AvgLogicalReads</p>
<p>存储过程执行的平均逻辑读取数。</p>
<p> </p>
<p>AvgMemUsed_KB</p>
<p>存储过程使用的平均内存量(以 KB 为单位)。</p>
<p> 使用 monSysStatement 监控表。</p>
<p> </p>
<p>显示有关指定数据库的过程的信息。</p>
<p><procname></p>
<p>显示有关指定过程的信息。</p>
<p>summary | detail</p>
<p>显示摘要信息(它提供过程的所有实例的平均值),或者显示详细信息(它提供有关存储过程的每个实例的信息)。</p>
<p>enable</p>
<p>启用 sp_monitor 的新选项。它打开开始监控所需的配置参数。</p>
<p>disable</p>
<p>禁用监控。</p>
<p>help</p>
<p>显示 sp_monitor 的语法和示例,同时报告将此过程用于死锁分析的详细信息:</p>
<div class="code-block"><pre><code>
sp_monitor 'help', 'deadlock'
help 选项还可提供特定于命令的示例。
deadlock</p>
<p>指示 sp_monitor 处理 monDeadlock 表中的历史数据,并输出每个死锁实例的输出块。</p>
<p>procstack</p>
<p>检查任务的执行环境,包括深层嵌套存储过程的执行环境。所执行的过程堆栈从 monProcessProcedures 监控表中提取。</p>
<h3>示例</h3>
<p> </p>
<h4>示例 1</h4>
<p> 报告有关 SAP ASE 服务器繁忙情况的信息:</p>
<div class="code-block"><pre><code>
sp_monitor
last_run current_run seconds
------------------- ------------------- ---------
Jan 29 1987 10:11AM Jan 29 1987 10:17AM 314
cpu_busy io_busy idle
--------------- --------- --------------
4250(215)-68% 67(1)-0% 109(100)-31%
packets_received packets_sent packet_errors
---------------- ------------ ------------
781(15) 10110(9596) 0(0)
total_read total_write total_errors connections
----------- ------------------------- -----------
394(67) 5392(53) 0(0) 15(1)
说明如何显示有关连接的信息:
1> sp_monitor "connection"
2> go
spid LoginName ElapsedTime LocksHeld SQLText
---- --------- ----------- --------- -----------------
12 sa 90300 2 exec get_employee_salaries
27 sa 17700 1 exec get_employee_perks
缺省情况下,缺省输出按 ElapsedTime 的降序顺序排序。
标识出执行物理读取最多的连接:
1> sp_monitor "connection","diskio"
2> go
spid LoginName Physical_Reads LocksHeld SQLText
---- --------- -------------- --------- --------------------------
12 sa 117 2 exec get_employee_salaries
27 sa 1 0 exec get_employee_perks
显示有关每条语句的信息:
1> sp_monitor "statement"
2> go
spid LoginName ElapsedTime SQLText
---- --------- ----------- --------------------------
12 sa 100 exec get_employee_salaries
显示每个任务花费时间等待的事件以及等待的持续时间,按等待时间的降序顺序报告:
1> sp_monitor "event"
2> go
SPID WaitTime Description
------ ----------- ------------------------------------------
6 108200 hk: pause for some time
29 108200 waiting for incoming network data
10 107800 waiting while allocating new client socket
15 17100 waiting for network send to complete
14 5900 waiting for CTLIB event to complete
14 400 waiting for disk write to complete
7 200 hk: pause for some time
7 100 waiting on run queue after yield
12 100 waiting for network send to complete
显示 spid 14 的事件数据:
1> sp_monitor "event","14"
2> go
WaitTime Description
----------- -----------------------------------
9000 waiting for CTLIB event to complete
600 waiting for disk write to complete
200 waiting for disk write to complete
100 waiting on run queue after yield
100 wait for buffer write to complete
#### 示例 7
提供最近运行的过程的摘要,按平均经历时间的降序顺序排序。本示例提供历史监控信息,而不是当前状态:
1> sp_monitor "procedure"
2> go
<h1>Average Procedure Statistics</h1>
<h2>ProcName DBName AvgElapsedTime AvgCPUTime AvgWaitTime AvgPhysicalReads AvgLogicalReads AvgPacketsSent NumExecs </h2>
neworder_remote tpcc 1833 16 1083 26 96 0 6
neworder_local tpcc 1394 13 1181 31 122 0 38
tc_startup tpcc 1220 3 1157 0 3 0 59
delivery tpcc 1000 0 800 23 49 0 2
> 注意</br></p>
<p>使用与 sp_monitor 关联的新参数之前,必须设置监控表以及启用这些选项所需的相关存储过程。</p>
<p></li></ul><ul><li>SAP ASE 服务器跟踪它对一系列全局变量产生的影响。sp_monitor 显示这些全局变量的当前值以及自最后执行过程后的更改量。</p>
<p></li></ul><ul><li>对于每一列,这些统计信息以 或
- 第一个数值表示秒数(对于 cpu_busy、io_busy 和 idle)或自 SAP ASE 服务器重新启动后的总数(对于其它列)。
- 小括号中的数值表示自最后一次运行 sp_monitor 后的秒数或总数。百分比符号指示自最后一次运行 sp_monitor 后的时间百分比。
例如,如果报告将 cpu_busy 显示为 "4250(215)-68%",则它意味着 CPU 自 SAP ASE 服务器最后一次启动以来处于忙状态的时间为 4250 秒,自 sp_monitor 最后一次运行以来处于忙状态的时间 215 秒,并且占 sp_monitor 自最后一次运行以来总时间的 68%。
对于 total_read 列,值 394(67) 意味着自 SAP ASE 服务器最后一次启动以来已有 394 个磁盘读取,其中 67 个读取是自最后一次运行 sp_monitor 后进行的。
connection
- monProcessSQLext
- max SQL text monitored – 值
- SQL batch capture – 布尔值
- monProcessActivity
- wait event timing – 布尔值
- per object statistics active – 布尔值
procstack
- monProcessProcedures
- 无 – 不适用
statement
- monProcessSQLText
- max SQL text monitored – 值
- SQL batch capture – 布尔值
- monProcessStatement
- statement statistics active – 布尔值
- per object statistics active – 布尔值
- wait event timing – 布尔值
event
- monProcessWaits
- wait event timing – 值
- process event waits – 布尔值
procedure
- monSysStatement
- statement statistics active – 布尔值
- per object statistics active – 布尔值
- statement pipe max messages – 值
- statement pipe active – 布尔值
deadlock
- monDeadlock
- deadlock pipe max messages – 值
- deadlock pipe active – 布尔值
sp_monitor connection 仅监控主动执行的 T-SQL 的连接,而不报告所有连接。
- 不提供任何选项 – 仅显示用户任务。
- 指定 sp_monitor, event, "-1",显示有关所有任务(包括用户任务和系统任务)的等待信息。
- 指定 sp_monitor, event, "spid",仅显示有关指定的服务器进程 ID 的等待信息。
| 列标题 | 等效变量和说明 |
|---|---|
| last_run | sp_monitor 过程最后一次运行的时钟时间。 |
| current_run | 当前时钟时间。 |
| seconds | 自 sp_monitor 最后一次运行以来的秒数。 |
| cpu_busy | @@cpu_busy。SAP ASE 服务器的 CPU 执行 SAP ASE 工作的秒数(CPU 时间)。 |
| io_busy | @@io_busy。SAP ASE 服务器执行输入和输出操作所用的秒数(CPU 时间)。 |
| idle | @@idle。SAP ASE 服务器处于空闲状态的秒数(CPU 时间)。 |
| packets_received | @@pack_received。SAP ASE 服务器读取的输入包的数目。 |
| packets_sent | @@pack_sent。SAP ASE 服务器读取的输出包的数目。 |
| packet_errors | @@packet_errors。SAP ASE 服务器读写包时检测到的错误数。 |
| total_read | @@total_read。SAP ASE 服务器读取的磁盘数目。 |
| total_write | @@total_write。SAP ASE 服务器写入的磁盘数目。 |
| total_errors | @@total_errors。SAP ASE 服务器读写时检测到的错误数。 |
| connections | @@connections。SAP ASE 服务器的登录或登录尝试次数。 |
- 在 SAP ASE 启动后首次 sp_monitor 运行时,小括号中的数值没有意义。
sp_configure "housekeeper free write percent", 0
- 运行 sp_monitor enable
- 调用 sp_monitor 选项
- 完成监控后,运行 sp_monitor disable