Displays statistics about the SAP ASE server.
sp_monitor [[connection | statement], [cpu | diskio | elapsed time]] [event, [spid ]] [procedure, [dbname, [procname[, summary | detail]]]] [enable] [disable] [help], [deadlock][procstack]
monProcessSQLText
monProcessActivity
monProcessSQLText
monProcessStatement
cpu – indicates the amount of CPU time consumed by each different connection or statement.
diskio – indicates the number of physical reads performed by each connection or statement.
elapsed time – indicates the sum of the CPU time and the wait times for each connection or statement.
No option – only user tasks are displayed.
sp_monitor, event, "-1" – wait information about all tasks, both user and system, is displayed.
sp_monitor, event, "spid" – wait information pertaining to only the specified server process ID is displayed.
ProcName – the stored procedure being monitored.
DBNAME – the database in which the stored procedure is located.
NumExecs – the approximate number of executions of this specific stored procedure.
AvgCPUTime – the average CPU time that it takes for the stored procedure to execute.
AvgPhysicalReads – the average number of disk reads performed by the stored procedure.
AvgLogicalReads – the average number of logical reads performed by the stored procedure.
AvgMemUsed_KB – the average amount of memory in KB used by the stored procedure.
procedure uses the monSysStatement monitoring table.
sp_monitor 'help', 'deadlock'
The help option also provides command-specific examples.
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
By default, the output by default is sorted in the descending order of the 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
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
1> sp_monitor "procedure" 2> go Average Procedure Statistics ============================ ProcName DBName AvgElapsedTime AvgCPUTime AvgWaitTime AvgPhysicalReads AvgLogicalReads AvgPacketsSent NumExecs -----------------------------------------------------------------------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
The SAP ASE server keeps track of how much work it has done in a series of global variables. sp_monitor displays the current values of these global variables and how much they have changed since the last time the procedure executed.
The first number refers to the number of seconds (for cpu_busy, io_busy, and idle) or the total number (for the other columns) since the SAP ASE server restarted.
The number in parentheses refers to the number of seconds or the total number since the last time sp_monitor was run. The percent sign indicates the percentage of time since sp_monitor was last run.
For example, if the report shows cpu_busy as “4250(215)-68%”, it means that the CPU has been busy for 4250 seconds since the SAP ASE server was last started, 215 seconds since sp_monitor last ran, and 68 percent of the total time since sp_monitor was last run.
For the total_read column, the value 394(67) means there have been 394 disk reads since the SAP ASE server was last started, 67 of them since the last time sp_monitor was run.
sp_monitor connection monitors connections actively executing T-SQL only, and does not report on all connections.
You must run sp_monitor from the master database. However, if you are analyzing deadlock data archived in another database, you can run sp_monitor deadlock from that database.
sp_monitor event no longer displays all tasks (including system tasks), when called with no options. In SAP ASE version 15.0.2 and above, the event option provides three possibilities. When:
No option is provided – only user tasks are displayed.
You specify sp_monitor, event, "-1", wait information about all tasks, both user and system, is displayed.
You specify sp_monitor, event, "spid", wait information pertaining to only the specified server process ID is displayed.
The following table describes the columns in the sp_monitor report, the equivalent global variables, if any, and their meanings. With the exception of last_run, current_run and seconds, these column headings are also the names of global variables—except that all global variables are preceded by @@. There is also a difference in the units of the numbers reported by the global variables—the numbers reported by the global variables are not milliseconds of CPU time, but machine ticks.
Column Heading |
Equivalent Variable |
Description |
---|---|---|
last_run |
Clock time at which the sp_monitor procedure last ran. |
|
current_run |
Current clock time. |
|
seconds |
Number of seconds since sp_monitor last ran. |
|
cpu_busy |
@@cpu_busy |
Number of seconds in CPU time that the SAP ASE server’s CPU was doing SAP ASE work. |
io_busy |
@@io_busy |
Number of seconds in CPU time that the SAP ASE server has spent doing input and output operations. |
idle |
@@idle |
Number of seconds in CPU time that the SAP ASE server has been idle. |
packets_received |
@@pack_received |
Number of input packets read by the SAP ASE server. |
packets_sent |
@@pack_sent |
Number of output packets written by the SAP ASE server. |
packet_errors |
@@packet_errors |
Number of errors detected by the SAP ASE server while reading and writing packets. |
total_read |
@@total_read |
Number of disk reads by the SAP ASE server. |
total_write |
@@total_write |
Number of disk writes by the SAP ASE server. |
total_errors |
@@total_errors |
Number of errors detected by the SAP ASE server while reading and writing. |
connections |
@@connections |
Number of logins or attempted logins to the SAP ASE server. |
The first time sp_monitor runs after SAP ASE start-up, the number in parentheses is meaningless.
sp_configure "housekeeper free write percent", 0
You must run sp_monitor when a representative workload is running on the system.
Typically, run procedures in this sequence:
Run sp_monitor enable
Invoke sp_monitor options
Run sp_monitor disable when you have completed the monitoring
When you are using sp_monitor procedure, the number of rows returned can be very large; you may want to use the summary option instead of the detail option. It may also take a while for this command to complete on an active system.
The database owner of sybsystemprocs can execute sp_monitor and can grant execute permission to other users
The stored procedure is created with execute as owner. The owner is sa. The owner must have mon_role which user sa has by default.
For more information see Monitoring Tables in Performance and Tuning: Monitoring and Analyzing.
Values in event and extrainfo columns from the sysaudits table are:
Information | Values |
---|---|
Event | 38 |
Audit option | exec_procedure |
Command or access audited | Execution of a procedure |
Information in extrainfo |
|