可以使用 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.0000000000000000The 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 配置参数。