向下钻取查询

可以使用向下钻取查询(也称为 SQL 跟踪)来收集有关运行的每个 SQL 语句的统计信息以及分析语句历史记录。

SQL 跟踪可帮助您回答如下问题:

统计信息存储在循环缓冲区(内存中名为 syssqltrace 的伪表)中,即存储在 sysmaster 数据库中。您可以动态地调整循环缓冲区的大小。

缺省情况下,SQL 跟踪已关闭,但是您可以对所有用户或一组特定用户打开此功能。在启用具有缺省配置的 SQL 跟踪时,数据库服务器会跟踪运行的上 1000 条 SQL 语句,以及这些语句的概要统计信息。还可以全局禁用 SQL 跟踪或禁用对特定用户的 SQL 跟踪。

如果您计划保存大量历史信息,那么 SQL 跟踪所需的内存相当大。SQL 跟踪所需的缺省空间量为 2 MB。可以根据需求增加或减少存储量。

显示的信息包括: 也可指定跟踪中要包含的信息的升级级别,如下所示:

所跟踪的信息量影响该历史数据所需的内存量。

您可以在任何时候启用和禁用跟踪,并可在数据库服务器运行时更改跟踪缓冲区的数目和大小。如果调整跟踪缓冲区的大小,那么数据库服务器将尝试维护缓冲区的内容。如果增大这些参数,数据将不会被截断。但是,如果缓冲区的数目或大小减小,那么跟踪缓冲区中的数据将被截断或丢失。

缓冲区的数目确定了所跟踪的 SQL 语句数。每个缓冲区包含单个 SQL 语句的信息。缺省情况下,各个跟踪缓冲区的大小是固定的。如果缓冲区中存储的文本信息超过跟踪缓冲区的大小,那么数据被截断。

以下示例显示 SQL 跟踪信息:
select * from syssqltrace where sql_id = 5678;

sql_id            5678
sql_address       4489052648
sql_sid           55
sql_uid           2053
sql_stmttype      6
sql_stmtname      INSERT
sql_finishtime    1140477805
sql_begintxtime   1140477774
sql_runtime       30.86596333400
sql_pgreads       1285
sql_bfreads       19444
sql_rdcache       93.39127751491
sql_bfidxreads    5359
sql_pgwrites      810
sql_bfwrites      17046
sql_wrcache       95.24815205913
sql_lockreq       10603
sql_lockwaits     0
sql_lockwttime    0.00
sql_logspace      60400
sql_sorttotal     0
sql_sortdisk      0
sql_sortmem       0
sql_executions    1
sql_totaltime     30.86596333400
sql_avgtime       30.86596333400
sql_maxtime       30.86596333400
sql_numiowaits    2080
sql_avgiowaits    0.014054286131
sql_totaliowaits  29.23291515300
sql_rowspersec    169.8958799132
sql_estcost       102
sql_estrows       1376
sql_actualrows    5244
sql_sqlerror      0
sql_isamerror     0
sql_isollevel     2
sql_sqlmemory     32608
sql_numiterators  4
sql_database      db3
sql_numtables     3
sql_tablelist     t1
sql_statement     insert into t1 select {+ AVOID_FULL(sysindices) } 0, tabname

有关所有表行的解释,请参阅 GBase 8s 管理员参考sysmaster 数据库部分中有关 syssqltrace 表的信息。