返回首页

gbase数据、南大通用产品文档:GBase8s添加到 sysindexes 或 sysindices 表中的行

更新日期:2024年09月11日

CREATE SCHEMA 块将两行添加至 sysindexes 系统目录表(GBase 8s 的 sysindices
表)。这些行对应于对 customer 表创建的索引,如在以下示例中所示。
idxname
c_num_ix
state_ix
owner
maryl
maryl

GBase 8s SQL 指南:参考
南大通用数据技术股份有限公司 - 12 -
idxname
c_num_ix
state_ix
tabid
101
101
idxtype
U
D
集群


part1
1
8
part2
0
0
part3
0
0
part4
0
0
part5
0
0
part6
0
0
part7
0
0
part8
0
0
part9
0
0
part10
0
0
part11
0
0
part12
0
0
part13
0
0
part14
0
0
part15
0
0
part16
0
0
levels


leaves


nunique


clust


idxflags



在此表中,idxtype 列标识创建的索引是需要唯一值 (U) 还是接受重复的值 (D)。例
如:customer.customer_num 列的 c_num_ix 索引是唯一的。
如果在执行查询或其他数据操作语言 (DML) 语句之前使用 UPDATE STATISTICS 语句
来更新系统目录,那么可以确保查询执行优化器可用的信息是最新的。
访问系统目录
普通用户对系统目录的访问是只读的。具有 Connect 或 Resource 特权的用户不能

GBase 8s SQL 指南:参考
南大通用数据技术股份有限公司 - 13 -
变更目录,但他们可以使用标准 SELECT 语句以只读方式来访问系统目录表中的数据。
例如,下面的 SELECT 语句显示数据库中用户创建表的所有表名及对应的 tabid 代
码:
SELECT tabname, tabid FROM systables WHERE tabid > 99
在使用 DB-Access 时,只显示您创建的表。要显示系统目录表,输入以下语句:
SELECT tabname, tabid FROM systables WHERE tabid < 100
可以使用 SUBSTR 或 SUBSTRING 函数来仅选择源字符串的一部分。要按列显示表的
列表,输入以下语句:
SELECT SUBSTR(tabname, 1, 18), tabid FROM systables
虽然用户 gbasedbt 可以修改大部分系统目录表,但不应该在这些表中更新、删除或
插入任何行。修改系统目录表的内容可能会影响数据库的完整性。然而,您可以安全地使
用 ALTER TABLE 语句来修改系统目录表的下一个扩展数据块的大小。更改下一个扩展数
据块大小不会影响已存在的扩展数据块。
但是,对于 GBase 8s 的某些目录表,将条目添加至系统目录表是有效的。例如,对
于 syserrors 系统目录表和 systracemsgs 系统目录表,DataBlade
(R) 模块开发者可以
直接插入位于这些系统目录表中的条目。
更新系统目录数据
如果在执行查询或其他数据操作语言 (DML) 语句之前使用 UPDATE STATISTICS 语句
来更新系统目录,那么可以确保查询执行优化器可用的信息是最新的。
在 GBase 8s 中,优化器会为执行 SQL 查询和其他 DML 操作确定最有效的策略。优
化器允许您查询数据库而不必全面考虑要先在连接中搜索哪些表或要使用哪些索引。优化
器使用来自系统目录中的信息以确定最佳查询策略。
当删除或修改表时,数据库服务器不会自动更新系统目录中的相关统计数据。例如:
如果使用 DELETE 语句删除表中的一行或多行,那么 systables 系统目录表中用于保存该
表行数的 nrows 列不会自动更新。
UPDATE STATISTICS 语句会让数据库服务器重新计算 systables、sysdistrib、
syscolumns 和 sysindices 系统目录表中以及 sysindexes 视图中的数据。(对于在
STATLEVEL 属性设置为 FRAGMENT 的分段表上的操作,它还会更新 sysfragdist 和
sysfragments 系统目录表。)在运行 UPDATE STATISTICS 之后,systables 系统目录表就
在 nrows 列中保存正确的值。如果在运行 UPDATE STATISTICS 时指定 MEDIUM 或 HIGH
方式,那么 sysdistrib 表会保存更新的列分布数据。如果在运行 UPDATE STATISTICS 时
指定 MEDIUM 或 HIGH 方式,那么 sysdistrib 系统目录表会保存更新的列分布数据。对于
分段级别的统计信息,sysfragdist 系统目录表会保存更新的列分布数据。
每当对数据表进行大量修改时,使用 UPDATE STATISTICS 语句来更新系统目录中的

GBase 8s SQL 指南:参考
南大通用数据技术股份有限公司 - 14 -
数据。有关 UPDATE STATISTICS 语句的更多信息,请参阅 GBase 8s SQL 指南:语法。

PG_TS_DICT 系统表包含定义文本搜索字典的记录。
字典取决于文本搜索模板,
该模板
声明所有需要的实现函数;字典本身提供模板支持的用户可设置的参数的值。
这种分工允许字典通过非权限用户创建。
参数由文本字符串dictinitoption 指定,
参数的
格式和意义取决于模板。
名称
类型
引用
描述
oid
oid
-
行标识符(隐含属性,必须
明确选择)。
dictname
name
-
文本搜索字典名。
dictnamespace
oid
PG_NAMESPACE.oid
包含这个字典的名称空间的
OID。
dictowner
oid
PG_AUTHID.oid
字典的所有者。
dicttemplate
oid
PG_TS_TEMPLATE.oid
这个字典的文本搜索模板的
OID。
dictinitoption
text
-
该模板的初始化选项字符
串。

可以使用 onstat -x 命令显示在数据库服务器上的事务信息。
语法:

只有在以下情况下事务信息才是必需的:
 X/Open 环境
 参与分布式查询的数据库服务器
 数据库服务使用 Microsoft™ Transaction Server (MTS)事务管理器
示例输出
图: onstat -x 命令输出

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

输出描述
可以如下解释 onstat -x 命令输出:
address
事务结构的共享内存地址
flags
位置 1 的标志代码(当前事务状态):
A
用户线程已连接到事务
S
TP/XA 暂挂的事务
C
TP/XA 正在等待回滚
位置 2 的标志代码(事务方式):
T
紧耦合方式(MTS)
L
松耦合方式(缺省方式)
位置 3 的标志代码(事务阶段):

GBase 8s 管理员参考
南大通用数据技术股份有限公司 - 664 -
B
开始工作
P
准备好用于提交的分布式查询
X
准备好用于提交的 TP/XA
C
正在提交或已提交
R
正在回滚或已回滚
H
正在尝试回滚或已回滚
位置 4 的标志代码
X
XA 事务
位置 5 的标志代码 (事务的类型):
G
全局事务
C
分布式查询协调者
S
分布式查询从属者
B
分布式查询协调者和从属者
M
重新定向的全局事务
userthread
拥有事务的线程(rstcb 地址)
locks
事务持有的锁数
begin logpos
BEGIN WORK 记录已记录到其中的日志
current logpos
事务最近写入的日志的当前日志位置 (当事务回滚时,当前日志位置会回退直到它到达起
始日志位置。 当到达起始日志位置,回滚结束。)

GBase 8s 管理员参考
南大通用数据技术股份有限公司 - 665 -
isol
隔离级别
est. rb time
服务器回滚该事务所需的估计时间。随着事务前进,该时间增长。如果事务回滚,那么该
时间随着事务的展开而减少
retrys
启动分布式查询的恢复线程的尝试次数
coord
从属者正在执行事务时事务协调者的名称
该字段告诉您哪个数据库服务器正在协调两阶段提交
onstat -x 命令输出的最后一行指示 8 是自初始化数据库服务器以来并发事务的最大数。

确定逻辑日志记录的位置
可以使用 onstat -x 命令确定逻辑日志记录的位置。
curlog 和 logposit 字段提供了逻辑日志记录的确切位置。如果事务不在回滚,curlog 和
logposit 描述最新写入的日志记录的位置。当事务正在回滚时,这些字段描述最新“撤销”
的日志记录的位置。
随着事务的回滚,
curlog 和 logposit 值下降。
在长事务中,
logposit 和
beginlg 值的聚集率可以帮助您估计回滚还将花费多少时间。
有关 onstat -x 命令示例,
请参阅 GBase 8s 管理员指南 中的多阶段提交协议一章中的监视
全局事务。
确定全局事务的方式
onstat -x 命令对确定全局事务是以松耦合方式还是以紧耦合方式执行很有用。
onstat -x 命令输出的 flag 列的第二个位置显示全局事务的标志。T 标志指示紧耦合方式,
L 标志指示松耦合方式。
 松耦合方式意味着不同的数据库服务器协调事务但不共享锁。全局事务中的每个分
支都具有独立的事务 XID 。
在逻辑日志中,
所有分支的记录都显示为独立的事务。

 紧耦合方式意味着不同数据库服务器协调事务并共享诸如锁和日志之类的资源。在
全局事务中,访问同一数据库的所有分支共享同一事务 XID 。具有相同 XID 的
分支的日志记录显示在同一会话 ID 下面。MTS 使用紧耦合方式。