GBase 8s常见问题解析---追踪统计SQL执行情况 SQLTRACE

本文介绍了在GBASE数据库中遇到SQL执行问题时如何使用SQLTRACE功能进行追踪和统计,包括设置SQLTRACE命令、跟踪数量和级别,以及如何关闭和查询SQLTRACE的统计信息。
摘要由CSDN通过智能技术生成

本文摘自GBASE南大通用社区,by:wty,原文请点击:GBase 8s常见问题 -- 追踪统计SQL执行情况 SQLTRACE|GBASE社区|天津南大通用数据技术股份有限公司|GBASE-致力于成为用户最信赖的数据库产品供应商

问题现象

某些SQL执行慢、有问题,又找不到对应的SQL时,可以尝试使用SQLTRACE来查问题SQL,或者统计一段时间内的SQL执行情况

解决方法

使用dbaccess连接sysadmin系统库,执行task函数

[gbasedbt@test15 ~]$ dbaccess sysadmin -

Database selected.

> execute function task("SET SQL TRACING ON", 50000,"4k","high","global");



(expression)  SQL Tracing ON: ntraces=50000, size=4056, level=High, mode=Global
              . 

1 row(s) retrieved.

> 

“SET SQL TRACING ON” : 开启SQLTRACE命令

50000 : 要跟踪的 SQL 语句的数目。默认 1000。超出后会删除旧的数据。

“4k” : 跟踪缓冲区大小的 KB 数。如果超过这个缓冲区大小,则数据库服务器丢弃保存的数据。默认 2 KB。

“high” : 跟踪级别。缺省为 low

使用 low 参数来捕获语句统计、语句文本和语句迭代器。

使用 med 参数来捕获包括在低级跟踪的所有信息,加上表名、数据库名和存储过程堆栈。

使用 high 参数来捕获包括在中级跟踪的所有信息,加上主机变量。

使用 global 参数来启用对所有用户的跟踪。

使用 user 参数来启用跟踪那些由 set sql tracing user 参数启用跟踪的用户。

“global” :跟踪所有用户还是选中的用户。 可以选 global、user

关闭SQLTRACE

[gbasedbt@test15 ~]$ dbaccess sysadmin -

Database selected.

> execute function task("SET SQL TRACING OFF");



(expression)  SQL Tracing OFF. 

1 row(s) retrieved.

> 

也可以在命令行使用echo给dbaccess传SQL语句执行

[gbasedbt@test ~]$ echo 'execute function task("SET SQL TRACING ON", 50000,"4k","high","global")'|dbaccess sysadmin

Database selected.




(expression)  SQL Tracing ON: ntraces=50000, size=4056, level=High, mode=Global
              . 

1 row(s) retrieved.



Database closed.

[gbasedbt@test ~]$ echo 'execute function task("SET SQL TRACING OFF")'|dbaccess sysadmin

Database selected.




(expression)  SQL Tracing OFF. 

1 row(s) retrieved.



Database closed.

查询SQLTRACE统计信息

使用SQL在sysmaster系统库中查syssqltrace表,建议适当使用group by / order by配合where条件进行统计

select * from sysmaster:syssqltrace

类型描述
sql_idint8唯一 SQL 执行 ID
sql_addressint8代码块中语句的地址
sql_sidint运行 SQL 语句的用户的数据库的会话 ID
sql_uidint运行 SQL 的语句的用户 ID
sql_stmttypeint语句类型
sql_stmtnamechar(40)显示为单词的语句类型
sql_finishtimeint次语句的完成时间 (UNIX™)
sql_begintxtimeint此事务的启动时间
sql_runtimefloat语句执行时间
sql_pgreadsint此 SQL 语句的磁盘读取数
sql_bfreadsint此 SQL 语句的缓冲区读取数
sql_rdcachefloat从缓冲池读取页的时间百分比
sql_bfidxreadsint索引页缓冲区读取数
sql_pgwritesint写入磁盘的页数
sql_bfwritesint已修改并返回到缓冲池的页数
sql_wrcachefloat页已写入缓冲池,但未写入磁盘的时间百分比
sql_lockreqint此 SQL 语句所需锁总数
sql_lockwaitsintSQL 语句等待锁的次数
sql_lockwttimefloatSQL 语句期间系统等待锁定的时间
sql_logspaceint逻辑日志中 SQL 语句所用空间量
sql_sorttotalint为语句运行的排序数
sql_sortdiskint磁盘上运行的排序数
sql_sortmemint内存中运行的排序数
sql_executionsintSQL 语句运行的次数
sql_totaltimefloat运行语句所用的时间总量
sql_avgtimefloat运行语句所用的平均时间
sql_maxtimefloat执行 SQL 语句所使用最大时间量
sql_numiowaitsintI/O 操作必须等待的次数
sql_avgiowaitsfloatSQL语句必须等待的平均时间量
sql_totaliowaitsfloatSQL 语句必须等待 I/O 的时间总量。这不包含任何异步 I/O
sql_rowspersecfloat产生的平均行数(每妙)
sql_estcostint与SQL 语句关联的成本
sql_estrowsint按照优化器的预测为 SQL 语句返回的预估计行数
sql_actualrowsint为 SQL 语句返回的行数
sql_sqlerrorintSQL 错误号
sql_isamerrorintRSAM/ISAM 错误编号
sql_isollevelintSQL 语句的隔离级别
sql_sqlmemoryint执行 SQL 语句所需字节数
sql_numiteratorsint语句所用迭代器数
sql_databasechar(128)数据库名称
sql_numtablesint执行 SQL 语句中所用表数
sql_tablelistchar(4096)SQL 语句中直接引用的表名列表。如果 SQL 语句激发对其他表执行语句的触发器,将不列出这些表
sql_statementchar(1600)已运行的 SQL 语句

  • 19
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值