SQL-Tracing可以帮助你回答诸如:
SQL语句须要多永劫光?单个语句利用了多少资源?语句实行须要多永劫光?每个资源等待的韶光有多长?统计信息存储在一个循环缓冲区中,该缓冲区是一个内存中的伪表,称为syssqltrace,存储在sysmaster数据库中。你可以动态地调度循环缓冲区的大小。
默认SQL-Tracing是关闭的,但可以为所有用户开启或者为特定的一组用户开启。当利用默认配置启动SQL-Tracing时,数据库做事器跟踪运行的末了1000条SQL语句,并对这些语句进行概况统计。你也可以在全局或针对特定用户禁用SQL-Tracing。

如果要保存大量的历史信息,SQL-Tracing所需的内存是很大的。SQL-Tracing所需空间的默认量为2MB。可以根据自己的需求扩大或减少存储量。
显示的信息包括:
运行该命令的用户ID数据库会话ID数据库的名称SQL语句的类型SQL语句实行的持续韶光当前语句完成的韶光例如,SQL语句的文本或带有语句类型的函数调用列表(也称为堆栈跟踪):procedure1()调用procedure2()调用procedure3()统计信息包括:缓冲区读写次数、读写页数种类数和磁盘种类数、锁要求数和等待数、逻辑日志记录的数量、索引缓冲区的读数、估计行数、优化器预估开销值、返回的行数数据库隔离级别。您还可以指定跟踪级别,如下所示:
默认情形下启用的低级跟踪捕捉到了下例所示的信息。这些信息包括语句统计信息、语句文本信息和语句迭代器信息。中级跟踪捕获了低级跟踪中包含的所有信息,以及表名、数据库名和存储过程栈的列表。高等跟踪捕获了中级跟踪中包含的所有信息,加上宿主变量。追溯的信息量影响着历史数据所需的内存量。
可以在任意韶光点启用和禁用跟踪,并且可以在数据库做事器运行时变动跟踪缓冲区的数量和大小。如果调度跟踪缓冲区的大小,则数据库做事器试图掩护缓冲区的内容。如果增加参数,数据不会被截断。但是,如果减少缓冲区的数量或大小,则跟踪缓冲区中的数据可能会被截断或丢失。
缓冲区的数量决定了被跟踪的SQL语句的数量。每个缓冲区包含单个SQL语句的信息。默认情形下,单个跟踪缓冲区为固定大小。如果存储在缓冲区中的文本信息超过跟踪缓冲区的大小,则对数据进行截断。
下面举例解释SQL-Tracing信息:
select from syssqltrace where sql_id = 5678;sql_id 5678sql_address 4489052648sql_sid 55sql_uid 2053sql_stmttype 6sql_stmtname INSERTsql_finishtime 1140477805sql_begintxtime 1140477774sql_runtime 30.86596333400sql_pgreads 1285sql_bfreads 19444sql_rdcache 93.39127751491sql_bfidxreads 5359sql_pgwrites 810sql_bfwrites 17046sql_wrcache 95.24815205913sql_lockreq 10603sql_lockwaits 0sql_lockwttime 0.00sql_logspace 60400sql_sorttotal 0sql_sortdisk 0sql_sortmem 0sql_executions 1sql_totaltime 30.86596333400sql_avgtime 30.86596333400sql_maxtime 30.86596333400sql_numiowaits 2080sql_avgiowaits 0.014054286131sql_totaliowaits 29.23291515300sql_rowspersec 169.8958799132sql_estcost 102sql_estrows 1376sql_actualrows 5244sql_sqlerror 0sql_isamerror 0sql_isollevel 2sql_sqlmemory 32608sql_numiterators 4sql_database db3sql_numtables 3sql_tablelist t1sql_statement insert into t1 select {+ AVOID_FULL(sysindices) } 0, tabname
二、利用SQLTRACE配置参数指定启动SQL-Tracing信息
利用SQLTRACE配置参数掌握数据库做事器启动时的默认跟踪行为。默认情形下,这个参数是不设置的。设置的信息包括要跟踪的SQL语句数量和跟踪模式。
任何可以修正onconfig文件的用户都可以修正SQLTRACE配置参数的值,从而影响启动配置。然而,只有用户gbasedbt、root或被付与系统管理员数据库连接权限的DBSA才能利用SQL管理API命令来修正SQL-Tracing的运行时状态。
在数据库做事器启动时指定SQL-Tracing信息:
1.在onconfig文件中设置SQLTRACE配置参数。
2.重新启动数据库做事器。
举例:
在onconfig文件中的以下设置指天命据库做事器网络系统上所有用户实行的最多2000条SQL语句的低级信息,并分配大约4MB的内存( 2000 2KB)。
SQLTRACE level=LOW,ntraces=2000,size=2,mode=global
如果只利用分配的缓冲区空间(例如,42%的缓冲空间)的一个百分比,则分配的内存量仍为2KB。
如果不想设置SQLTRACE配置参数,重启做事器,可以运行下面的SQL管理API命令,为当前会话供应与设置SQLTRACE相同的功能:
EXECUTE FUNCTION task("set sql tracing on", 100,"1k","med","user");
在用户模式下启用SQL-Tracing系统后,即可对每个用户启用跟踪。
三、在全局或会话中禁用SQL-Tracing纵然SQLTRACE配置参数中指定的模式是全局的或用户的,如果想要完备关闭所有用户和全局跟踪,并通过SQL-Tracing重新分配当前利用的资源,就可以禁用SQL-Tracing。默认情形下,对所有用户关闭SQL-Tracing。
必须以用户gbasedbt或另一授权用户的身份连接到系统管理员数据库。
为了禁用全局SQL-Tracing,运行SQL管理API task ()或admin ()函数,并设置sql跟踪参数。
为禁用特定会话的SQL-Tracing,运行SQL管理API task ()或admin ()函数,设置sql跟踪为第一个参数,会话标识号为第二个参数。
举例:
下面的示例全局禁用SQL-Tracing:
EXECUTE FUNCTION task('set sql tracing off');(expression) SQL tracing off. 1 row(s) retrieved.
下面的例子使ID为47的会话无法进行SQL-Tracing:
EXECUTE FUNCTION task("set sql user tracing off",47);
四、启用SQL-Tracing
在将用户指定为SQLTRACE配置参数中的模式后,必须运行SQL管理API task ()或admin ()函数,才能对特定的用户进行SQL历史跟踪。
必须以用户gbasedbt或另一授权用户的身份连接到系统管理员数据库。
不须要启用全局SQL-Tracing就可以对特定用户进行SQL-Tracing。
为了实现对特定用户的SQL-Tracing,运行SQL管理API task ()或admin ()函数,设置sql跟踪作为第一个参数,用户会话ID作为第二个参数。
为了实现对除root或gbasedbt以外的所有用户的SQL-Tracing,可以运行task ()或admin ()函数,并利用sql对定义用户的参数和信息进行跟踪。
举例:
下面的例子实现了对会话ID为74的用户进行SQL-Tracing:
EXECUTE FUNCTION task("set sql user tracing on", 74);
下面的例子可以实现跟踪当前连接到系统的用户的SQL语句,只要他们没有作为用户root或gbasedbt登录。
dbaccess sysadmin -<<END execute function task("set sql tracing on", 1000, 1,"low","user"); select task("set sql user tracing on", session_id) FROM sysmaster:syssessions WHERE username not in ("root","gbasedbt"); END
五、为会话启用全局SQL-Tracing
通过运行SQL管理API task ()或admin ()函数,可以为当前会话启用全局SQL-Tracing。
必须以用户gbasedbt或另一授权用户的身份连接到系统管理员数据库。
默认情形下,不启用全局SQL-Tracing。可以通过设置SQLTRACE配置参数来永久启用全局跟踪。
为了实现对当前数据库做事器会话的全局用户SQL历史跟踪,用设置在参数上的sql跟踪来运行SQL管理API task ()或admin ()函数。
举例:
下面的例子可以实现对所有用户的全局低级SQL-Tracing:
EXECUTE FUNCTION task("set sql tracing on", 1000, 1,"low","global");
原文链接:https://www.gbase.cn/community/post/3978更多精彩内容尽在GBASE社区|天津南大通用数据技能株式会社|GBASE-致力于成为用户最相信的数据库产品供应商