返回首页

gbase数据、南大通用产品文档:GBase8acache_access_info

更新日期:2024年09月11日

功能说明
select/insert/update 操作对内存的访问情况,
delete/show 操作表中值不改变,
gbased
重启表中值归零。
表结构说明
表5- 273 表结构信息说明:




ACCESS_TIMES
从gbased 启动后访问内存的总次数
HIT_TIMES
命中的总次数
MISS_TIMES
未命中的总次数
HIT_RATE
命中率
SNOPSHOTTIME
快照时间

sysprocplan 系统目录表描述每个例程内的数据操作语句的查询执行方案和依赖性列
表。由于可以在不同的日期创建例程方案的不同部分,所以此表可以包含每个例程的多个
行。
表 27. SYSPROCPLAN 表列描述

类型
解释
procid
INTEGER
例程的标识代码
planid
INTEGER
计划的标识代码
datakey
CHAR(1)
data 列中存储的信息的类型:D = 依赖性列表I =
信息记录Q = 执行计划
seqno
INTEGER
方案内的行号
created
DATE
创建方案的日期

GBase 8s SQL 指南:参考
南大通用数据技术股份有限公司 - 58 -

类型
解释
datasize
INTEGER
列表或方案的大小(以字节计)
data
CHAR(256)
已编码(编译)的列表或计划
collation
CHAR(32)
创建例程时的排列顺序

在运行例程之前,会检查 data 列中例程的依赖性列表。如果方案存取的表的主版本
号已更改,或者如果例程使用的任何对象自从优化方案以来已被修改(例如:如果已删除
索引),那么会再次优化方案。当 datakey 为 I 时,data 列存储有关 UPDATE
STATISTICS 和 PDQPRIORITY 的信息。
可通过对 sysprocplan 使用 DELETE 语句来删除给定例程的所有方案。当后来执行例
程时,新的方案就会自动生成并记录在 sysprocplan 中。UPDATE STATISTICS FOR
PROCEDURE 语句也会更新此表。
procid、planid、datakey 和 seqno 列的组合索引只允许唯一值。

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

SQL 语句耗费多少时间?

单个语句使用多少资源?

语句执行耗费多少时间?

等待每个资源耗费多少时间?
统计信息存储在循环缓冲区(内存中名为 syssqltrace 的伪表)中,即存储在 sysmaster 数
据库中。您可以动态地调整循环缓冲区的大小。
缺省情况下,SQL 跟踪已关闭,但是您可以对所有用户或一组特定用户打开此功能。在
启用具有缺省配置的 SQL 跟踪时,数据库服务器会跟踪运行的上 1000 条 SQL 语句,
以及这些语句的概要统计信息。还可以全局禁用 SQL 跟踪或禁用对特定用户的 SQL 跟
踪。
如果您计划保存大量历史信息,那么 SQL 跟踪所需的内存相当大。SQL 跟踪所需的缺省
空间量为 2 MB。可以根据需求增加或减少存储量。
显示的信息包括:

运行命令的用户的用户标识

数据库会话标识

数据库的名称

SQL 语句的类型

SQL 语句执行的持续时间

该语句完成的时间

带有语句类型的 SQL 语句文本或函数调用列表(也称为堆栈跟踪),例如:
procedure1() calls procedure2() calls procedure3()

统计信息包括:

缓冲区读取和写入的数目

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 546 -

页面读取和写入的数目

排序和磁盘排序的数目

锁请求和等待的数目

逻辑日志记录的数目

索引缓冲区读取的数目

估计的行数

优化器估计成本

返回的行数

数据库隔离级别。
也可指定跟踪中要包含的信息的升级级别,如下所示:

低级别跟踪,缺省情况下已启用,用于捕获以下示例中显示的信息。该信息包含
语句统计信息、语句文本和语句迭代器。

中等级别跟踪,除了用于捕获低级别跟踪中包含的所有信息外,还捕获表名、数
据库名称和存储过程堆栈的列表。

高级别跟踪,除了用于捕获中等级别跟踪中包含的所有信息外,还捕获主变量。
所跟踪的信息量影响该历史数据所需的内存量。
您可以在任何时候启用和禁用跟踪,并可在数据库服务器运行时更改跟踪缓冲区的数目和
大小。如果调整跟踪缓冲区的大小,那么数据库服务器将尝试维护缓冲区的内容。如果增
大这些参数,数据将不会被截断。但是,如果缓冲区的数目或大小减小,那么跟踪缓冲区
中的数据将被截断或丢失。
缓冲区的数目确定了所跟踪的 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

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 547 -
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 表的信息。

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 548 -
使用 SQLTRACE 配置参数指定启动 SQL 跟踪信息
使用 SQLTRACE 配置参数可控制数据库服务器启动时的缺省跟踪行为。缺省情况下,不
设置该参数。所设置的信息包括要跟踪的 SQL 语句数目和跟踪方式。
可以修改 onconfig 文件的任何用户均可修改 SQLTRACE 配置参数的值,并可影响启动配
置。但是,只有用户 gbasedbt、root 或被授予 sysadmin 数据库连接特权的 DBSA 才可以
使用 SQL 管理 API 命令来修改 SQL 跟踪的运行时状态。
要在数据库服务器启动时指定 SQL 跟踪信息,请执行以下操作:
1.
设置 onconfig 文件中的 SQLTRACE 配置参数。
2.
重新启动数据库服务器。
示例
onconfig 文件中的以下设置指定数据库服务器将收集有关系统上所有用户执行过的低级别
信息,最多收集 2000 条,并分配大约 4 MB 内存 (2000 * 2 KB)。
SQLTRACE level=LOW,ntraces=2000,size=2,mode=global
如果仅使用部分已分配的缓冲区空间(例如,缓冲区空间的 42%),那么所分配的内存
量仍然为 2 KB。
如果不想设置 SQLTRACE 配置参数并重新启动了服务器,那么可以运行以下 SQL 管理
API 命令,该命令提供的功能与为当前会话设置 SQLTRACE 的功能相同:
EXECUTE FUNCTION task("set sql tracing on", 100,"1k","med","user");
在以用户方式启用 SQL 跟踪系统后,就可以启用对每个用户的跟踪。请参阅启用 SQL
跟踪。
有关使用 task() 和 admin() 函数的更多信息,请参阅《GBase 8s 管理员参考》。
有关 SQLTRACE 配置参数的更多信息(包括某些字段的最小值和最大值),请参阅
《GBase 8s 管理员参考》。
全局禁用 SQL 跟踪或禁用对某个会话的 SQL 跟踪
即使 SQLTRACE 配置参数中指定的方式为 global 或 user,但如果要完全关闭所有用户和
全局跟踪,并取消分配给 SQL 跟踪当前正在使用的资源,也可以禁用 SQL 跟踪。缺省
情况下,禁用对所有用户的 SQL 跟踪。
必须以用户 gbasedbt 或其他授权用户身份连接 sysadmin 数据库。
要禁用全局 SQL 跟踪,请运行使用 set sql tracing off 自变量的 SQL 管理
API task() 或 admin() 函数。
要禁用对特定会话的 SQL 跟踪,请运行 set sql tracing off 作为第一个自变量,会话标识
号作为第二个自变量的 task() 或 admin() 函数。
示例

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 549 -
以下示例全局禁用 SQL 跟踪:
EXECUTE FUNCTION task('set sql tracing off');
(expression) SQL tracing off.

1 row(s) retrieved.
以下示例对标识为 47 的会话禁用 SQL 跟踪:
EXECUTE FUNCTION task(“set sql user tracing off”,47);
有关使用 task() 或 admin() 函数的更多信息,请参阅《GBase 8s SQL 指南:语法》。
启用对特定用户的 SQL 跟踪
在指定 user 作为 SQLTRACE 配置参数中的方式后,必须运行 SQL 管理
API task() 或 admin() 函数来打开对特定用户的 SQL 历史记录跟踪。
必须以用户 gbasedbt 或其他授权用户身份连接 sysadmin 数据库。
无需启用全局 SQL 跟踪,即可对特定用户进行 SQL 跟踪。
要启用对特定用户的 SQL 跟踪,请运行使用 set sql tracing on 作为第一个自变量,用户会
话标识作为第二个自变量的 task() 或 admin() 函数。
要对除 root 或 gbasedbt 之外的所有用户启用用户 SQL 跟踪,可运行使用 set sql tracing
on 自变量和定义这些用户的信息的 task() 或 admin() 函数。
示例
以下示例对会话标识为 74 的用户启用 SQL 跟踪:
EXECUTE FUNCTION task("set sql user tracing on", 74);
以下示例启用对当前连接到系统的用户(只要它们未以用户 root 或 gbasedbt 身份登录)的
SQL 语句跟踪。
dbaccess sysadmin -<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
有关 task() 和 admin() 函数的更多信息,请参阅《GBase 8s 管理员参考》。
启用对某个会话的全局 SQL 跟踪
可以通过运行 SQL 管理 API task() 或 admin() 函数,对当前会话启用全局 SQL 跟踪。
必须以用户 gbasedbt 或其他授权用户身份连接 sysadmin 数据库。

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 550 -
缺省情况下,全局 SQL 跟踪未启用。可以设置 SQLTRACE 配置参数以永久启用全局跟
踪。
要对当前数据库服务器会话启用全局用户 SQL 历史记录跟踪,请运行使用 set sql tracing
on 自变量的 SQL 管理 API task() 或 admin() 函数。
示例
以下示例对所有用户启用全局低级别 SQL 跟踪:
EXECUTE FUNCTION task("set sql tracing on", 1000, 1,"low","global");
如果在语句运行后有新用户登录到系统,那么可以启用对该新用户的跟踪。请参阅启用
SQL 跟踪。
有关 task() 和 admin() 函数的更多信息,请参阅《GBase 8s SQL 指南:语法》。






GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 551 -