返回首页

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

更新日期:2024年09月11日

函数说明
SEGMENT_ID(tbname)
参数tbname 为表名,获取节点分片序号。
功能描述
伪列,
由server 自动维护,
不实际存储。
由参数gcluster_segment_id_replace 控制,
默认值为0,
不支持segment_id(tbname)函数,
值设置为1时支持Segment_id(tbname)
函数。
使用说明
Sql 由gcluster 下发到gnode 时,segment_id 会替换为分片序号。
示例:
set gcluster_segment_id_replace=1;
select segment_id(t) from t;
N1 节点接收到的语句为:select ‘1’ as segment_id(t1) from t1_n1;
功能说明

可以用于集群层统计各个分片的行数或者其他信;
gbase> Select count(*) , segment_id(t) from t group by segment_id(t);

可以用于集群层实现对单个分片的查询
gbase> select * from t where segment_id(t)='2';

依据分片id 加rowid 可以获取记录唯一。
gbase> select * from t where segment_id(t)='2' and rowid=1;

语法
gaussdb [OPTION]...

数据库服务器可保持对在事务期间数据库服务器对数据库进行的每一更改的记录。如果发
生了取消该事务的情况,则数据库服务器自动地使用这些记录来撤销更改。许多原因可导
致事务失败。例如,发出 SQL 语句的程序可失败或被终止。数据库服务器一发现事务失
败,失败可能就在重新启动计算机和数据库服务器之后发生,它就使用来自该事务的记录
来将数据库返回到之前的同一状态。
保存事务的记录的过程称为事务日志记录,或简称为日志记录。事务的记录,称为日志记
录,保存在与数据库分开的磁盘空间部分中。此空间称为逻辑日志,因为该日志记录表示
事务的逻辑单元。
GBase 8s 提供下列支持:

在日志记录数据库中创建无日志记录(raw)或日志记录(standard)的表。

使用 ALTER TABLE 语句将表从无日志记录改变为日志记录,或相反。
为了快速加载非常大的表,GBase 8s 支持无日志记录的表。建议您在事务内不使用无日志
记录的表。要避免并发问题,在您在事务中使用表之前,请使用 ALTER TABLE 语句来使
该表成为 standard(即,日志记录)。
要获取关于 GBase 8s 的无日志记录的表的更多信息,请参阅《GBase 8s 管理员指南》。
要了解无日志记录的表的性能优势,请参阅《GBase 8s 性能指南》。要获取关于 ALTER
TABLE 语句的信息,请参阅 GBase 8s SQL 指南:语法。
大多数 GBase 8s 数据库不会自动地生成事务记录。DBA 决定数据库是否使用事务日志记
录。没有事务日志记录,您就不可回滚事务。

日志记录和级联删除
为了使级联删除起作用,必须在您的数据库中打开日志记录,因为当您指定级联删除时,
首先在父表的主键上执行删除。如果在执行父表的主键的行删除之后,但在删除子表的外
键的行之前,
系统出现故障,
则违反引用完整性。
如果关闭日志记录,
即使是临时地关闭,
也不会级联删除。然而,在重新打开日志记录之后,又可级联删除。
GBase 8s 允许您使用 CREATE DATABASE 语句中的 WITH LOG 子句来打开日志记录。