可以使用 onstat -g his 命令显示 sysmaster 数据库中 syssqltrace 表(包括 syssqltrace 、syssqltrace_info 、syssqltrace_hvar 和 syssqltrace_itr)收集的 SQL 跟踪信息。
SQLTRACE 配置参数的 level 设置会影响由 syssqltrace 表存储和显示的 SQL 跟踪信息,并影响 onstat -g his 显示的信息。syssqltrace 表每行描述一条以前执行的 SQL 语句。缺省情况下,只有 DBSA 可以查看来自 onstat -g his 命令的 syssqltrace 信息。然而,当将 UNSECURE_ONSTAT 配置参数设置为 1 时,所有的用户都可以查看该信息。
输出的内容依赖于跟踪的设置。
输出中的 Statement history 部分提供有关正在跟踪的当前设置的信息。
Statement history:
Trace Level Low
Trace Mode Global
Number of traces 1000
Current Stmt ID 2
Trace Buffer size 2008
Duration of buffer 293 Seconds
Trace Flags 0x00001611
Control Block 0x4c2f0028
| 元素 | 描述 |
|---|---|
| Trace Level | 已跟踪的信息量。可用值为 LOW 、MED 、HIGH 和 OFF |
| Trace Mode | 执行跟踪的类型。Global 参考系统上的所用用户。User 只参考由 SQL 管理 API 函数启用的用户。 |
| Number of traces | 跟踪的 SQL 语句的数量。该值在 onconfig 文件中进行设置,除非 SQL 管理 API 函数动态更改了 ntraces 参数。它的取值范围是 500 到 2147483647 。如果有 100,000 个跟踪缓冲区,每秒组织运行 1000 条 SQL 语句并要跟踪所有的语句,那么这些缓冲区在重写之前将持续 100 秒。 |
| Current Stmt ID | 当前 SQL 语句的 ID 。每条被跟踪的语句都获得一个唯一 ID 。 |
| Trace Buffer size | 每个跟踪缓冲区将获取的数据量(以字节表示)。如果将此大小设置为 2 KB ,但是有一条 12 KB 的 SQL 语句,那么该语句将会截断至少 10 KB 。更多的数据可能会被截断,它依赖于要跟踪的其它的数据。 |
| Duration of buffer | 以秒表示跟踪的数据在当前跟踪缓冲区跨度的时间量。它不是 sqltrace 功能已运行的时间。在上述示例中,Duration of buffer 是 293 秒,它表示跟踪的第一条和最后一条 SQL 语句之间的时间。 |
| Trace Flags | 当前设置的 SQL 跟踪标志 |
| Control Block | 该 SQL 跟踪控制 block 的内存地址 |
Statement # 2: @ 0x4c2f3028
Database: sysmaster
Statement text:
select count(*) from systables,syscolumns where systables.tabid > ? and
systables.nrows < ?
SELECT using tables [ systables syscolumns ]
下表是该输出的描述:| 元素 | 描述 |
|---|---|
| Database | 数据库名或该数据库的 systables 条目部分的编号 |
| Statement text | 该 SQL 语句的文本。如果该语句时存储过程,那么该语句文本将显示该过程的堆跟踪。如果声明和数字统计大于跟踪缓冲区,那么该语句文本可能会被截断。 |
Iterator/Explain
================
ID Left Right Est Cost Est Rows Num Rows Partnum Type
3 0 0 17 42 146 1048579 Index Scan
4 0 0 5249 2366 2366 1048580 Seq Scan
2 3 4 5266 99372 345436 0 Nested Join
1 2 0 1 1 1 0 Group
下表是该输出的描述: | 元素 | 描述 |
|---|---|
| ID | SQL 迭代器 ID |
| Left | 迭代器左侧输入的 ID |
| Right | 迭代器右侧输入的 ID |
| Est Cost | 本次迭代的估计成本 |
| Est Rows | 本次迭代的估计行数 |
| Num Rows | 本次迭代的实际行数 |
| Partnum | 表编号或索引分区编号 |
| Type | 操作类型 |
Host Variables
==============
1 integer 100
2 float 1000.0000000000000000
The
following table describes this output: | 元素 | 描述 |
|---|---|
| Column 1 | 该语句中变量的位置 |
| Column 2 | 该变量的数据类型 |
| Column 3 | 该变量值 |
Statement information:
Sess_id User_id Stmt Type Finish Time Run Time TX Stamp PDQ
5 2053 SELECT 01:08:48 0.4247 340a6e9 0
下表是该输出的描述: | 元素 | 描述 |
|---|---|
| Sess_id | 会话 ID |
| User_id | 此操作系统用户 ID |
| Stmt Type | SQL 语句类型 |
| Finish Time | 当天该 SQL 语句结束的时间 |
| Run Time | 虚拟处理器或线程处理该语句所花费的总时间。例如:如果 Finish Time 是 1:15:00 ,Run Time 是 9 分钟并且启动时间不一定是 1:06:00 ,那么可能在并行语句部分调用了多个虚拟处理器或线程。 |
| TX Stamp | 该事务中记录 BEGIN WORK 语句的时间 |
| PDQ | SQL 语句 PDQ 级别 |
Statement Statistics:
Page Buffer Read Buffer Page Buffer Write
Read Read % Cache IDX Read Write Write % Cache
1285 19444 93.39 0 810 17046 95.25
Lock Lock LK Wait Log Num Disk Memory
Requests Waits Time (S) Space Sorts Sorts Sorts
10603 0 0.0000 60.4 KB 0 0 0
Total Total Avg Max Avg I/O Wait Avg Rows
Executions Time (S) Time (S) Time (S) IO Wait Time (S) Per Sec
1 30.8660 30.8660 30.8660 0.0141 29.2329 169.8959
Estimated Estimated Actual SQL ISAM Isolation SQL
Cost Rows Rows Error Error Level Memory
102 1376 5244 0 0 CR 32608
| 元素 | 描述 |
|---|---|
| Page Read | 该 SQL 语句已从磁盘读取的页数 |
| Buffer Read | 该 SQL 语句从缓冲池读取而不是从磁盘读取页的次数 |
| Read % Cache | 应从缓冲池读取页的次数的百分比 |
| Buffer IDX Read | 尚未明确 |
| Page Write | 写入磁盘的页数 |
| Buffer Write | 修改并发送回缓冲池的页数 |
| Write % Cache | 页面写入缓冲池而不是写入磁盘的次数的百分比 |
| Lock Requests | 该语句所需的锁的总数 |
| Lock Waits | 该 SQL 语句等待锁的次数 |
| LK Wait Time (S) | 该语句等待锁的时间(以秒为单位) |
| Log Space | 逻辑日志中该 SQL 语句已使用的存储空间量 |
| Num Sorts | 用于执行语句的排序总数 |
| Disk Sorts | 对于该 SQL 语句,对磁盘执行的排序的次数 |
| Memory Sorts | 对于该 SQL 语句,对内存执行的排序的次数 |
| Total Executions | 该语句已执行的总次数,或者该游标重用的次数 |
| Total Time (S) | 执行该语句的总时间(以秒表示) |
| Avg Time (S) | 执行该语句的平均时间(以秒表示) |
| Max Time (S) | 运行 SQL 语句的总时间(以秒为单位),不包括应用程序使用的任何时间。如果您准备一个查询然后查询 5 次,该查询每次将一个跟踪添加到跟踪缓冲区中。Max Time 是任意执行所花的最长时间 |
| Avg IO Wait | 语句等待 I/O 的时间量,不包括任何异步 I/O |
| I/O Wait Time (S) | 语句等待 I/O 的时间量,不包括任何异步 I/O(以秒为单位) |
| Avg Rows Per Sec | 该语句每秒产生的平均行数 |
| Estimated Cost | 与 SQL 语句关联的查询优化程序的代价 |
| Estimated Rows | 返回的估计行数,由语句的优化程序估计 |
| Actual Rows | 该语句返回的行数 |
| SQL Error | SQL 错误编号 |
| ISAM Error | RSAM 或 ISAM 错误编号 |
| Isolation Level | 该语句运行时使用的隔离级别 |
| SQL Memory | 该 SQL 语句需要的字节数 |
有关 syssqltrace 系统监视接口表的完整结构,请参阅 syssqltrace。
有关 SQLTRACE 配置参数的详细设置信息,请参阅 SQLTRACE 配置参数。