返回首页

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

更新日期:2024年09月11日

在关系数据库系统中,表是一行列标题加上零行或多行数据值。列标题行标识了一个或多
个列以及每一列的数据类型。
当创建表时,数据库服务器会为称为扩展数据块的页块中的表分配磁盘空间。(请参阅扩
展数据块数。)您可以指定第一个以及任何后续扩展数据块的大小。
可以在创建表(通常用 CREAT TABLE 的 IN dbspace 选项)时,通过命名数据库空间将
表放到特定的数据库空间中。不指定数据库空间时,数据库服务器会将该表放置在数据库
所在数据库空间中。
您还可以:

在多个数据库空间上将表分段。然而,您不能将这些分段放在不同页大小的数据库
空间中。所有分段可能都需要有相同的页大小。
您必须为指定哪些表行位于哪些数据库空间的表定义分布方案。

如果分段表使用基于表达式的或循环分发方案,
请在单个数据库空间内创建分段表
的多个分区。
表或表分段完全位于在其中创建它们的数据库空间中。数据库服务器管理员可以使用此事
实来限制表的增长,方法是将表放置在数据库空间中然后当数据库空间变满时拒绝向其添
加块。
有关分布方案的更多信息,请参阅《GBase 8s 数据库设计和实现指南》。有关如何在多个
磁盘上对表和索引进行分段以提高性能、
并发性、
数据可用性和备份的信息,
请参阅
《GBase
8s 性能指南》。

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 175 -
由扩展数据块组成的表可以跨多个块,如下图所示。
图: 跨多个块的表


简单大对象位于 BLOB 页中,这些 BLOB 页可以位于带有表的数据页的数据库空间中或
位于独立的 BLOB 空间中。
简单大对象位于 BLOB 页中,这些 BLOB 页可以位于带有表的数据页的数据库空间中或
位于独立的 BLOB 空间中。
使用 Optical Subsystem,
您还可以将简单大对象存储在光存储
子系统中。
有关表存储的位置的建议,请参阅磁盘布局准则以及《GBase 8s 性能指南》。
已损坏的表
以下各项可能损坏表:

不正确的缓冲区清空

用户错误

在块顶部安装文件系统或另一个块

当更改的范围超出您要求的范围时进行删除或更新
已损坏的索引会导致表看起来已损坏,即使该表实际并未损坏也是如此。
oncheck 命令不能修复大多数已损坏的表。
如果某个页已损坏,
oncheck 可检测并尝试修理
该页,但无法更正该页中的数据。

以下示例显示了添加到 SPL 例程 items_pct 中的 TRACE 语句。SET DEBUG FILE TO 语
句将跟踪输出定向至路径名所指定的文件。TRACE ON 语句开始跟踪过程中的语句和变
量。

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司 - 343 -

CREATE PROCEDURE items_pct(mac CHAR(3))
DEFINE tp MONEY;
DEFINE mc_tot MONEY;
DEFINE pct DECIMAL;
SET DEBUG FILE TO 'pathname';

TRACE 'begin trace';
TRACE ON;
LET tp = (SELECT SUM(total_price) FROM items);
LET mc_tot = (SELECT SUM(total_price) FROM items
WHERE manu_code = mac);
LET pct = mc_tot / tp;
IF pct > .10 THEN
RAISE EXCEPTION -745;
END IF
TRACE OFF;
END PROCEDURE;

CREATE TRIGGER items_ins
INSERT ON items
REFERENCING NEW AS post_ins
FOR EACH ROW(EXECUTE PROCEDURE items_pct (post_ins.manu_code));

-p gbase -f gbase.lic
注:
如果多实例服务器的data 节点目录下有未导入gbase.lic 的,可将
gbase.lic 手动拷贝到该data 节点下,如:
scp
/opt/192.168.146.21/gcluster/config/gbase.lic
gbase@192.168.146.41:/opt/192.168.146.41/gcluster/config/