返回首页

gbase数据、南大通用产品文档:GBase8stenant create 参数:创建 tenant 数据库

更新日期:2024年09月11日

(SQL 管理 API)
随同 admin() 或 task() 函数,使用 tenant create 参数来创建 tenant 数据库。
语法

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


元素
描述
关键考虑
database_name
tenant 数据库名。
在数据库服务器的数据库名中必须是唯一
的。该数据库标记为 tenant 数据库。
dbspace
dbspace 的名称。
罗列要在其中存储永久用户数据的一个或多
个 dbspace。用逗号分隔 dbspace 名。每一
dbspace 必须存在且为空。
tenant 数据库必须存储在一个或多个专用
的 dbspace 中。
仅在 tenant 数据库中创建
的对象可存储在该专用的 dbspace 中。
blobspace
blobspace 的名称。
如果 tenant 数据库会包含简单大对象,则
罗列一个或多个 blobspace。用逗号分隔
blobspace 名称。
每一 blobspace 必须存在
且为空。
仅存储在 tenant 数据库表中的简单大对象

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

元素
描述
关键考虑
可存储在该专用的 blobspace 中。
sbspace
sbspace 的名称。
如果 tenant 数据库会包含智能大对象,则
罗列一个或多个 sbspace。用逗号分隔
sbspace。每一 sbspace 必须存在且为空。
智能大对象可包括 BLOB 或 CLOB 数据,以
及那些过大以至于不适合在行中的表统计信
息。
有些 GBase
8s 特性,
诸如 Enterprise
Replication 和基本文本搜索,需要
sbspace。
仅存储在 tenant 数据库表中的智能大对象
可存储在专用的 sbspace 中。
vpclass
虚拟处理器类的名称。 在其中为 tenant 数据库运行会话线程的
tenant 虚拟处理器类。如果您省略这个属
性,则在 CPU 虚拟处理器上运行会话线程。

vpclass_name 限定为 8 字符。最多可创建
200 个 tenant 虚拟处理器。
如果 vpclass_name 是唯一的,则您可创建
新的 tenant 虚拟处理器类。如果存在
vpclass_name,则该 tenant 数据库与其他
tenant 数据库共享该类。
vps
要运行的虚拟处理器
数。
如果您未包括 num=vps 属性,
则启动一个虚
拟处理器。
tempdbspace
临时 dbspace 的名称。
罗列要在其中存储临时用户数据的一个或多
个临时 dbspace。用逗号分隔临时 dbspace
名称。如果省略这个属性,则临时表存储在
由 DBSPACETEMP 配置参数或环境变量指定
的临时 dbspace 中。
您可通过设置 DBSPACETEMP 环境变量取代
会话的 dbspacetemp 属性。
tempsbspace
临时 sbspace 的名称。
罗列在其中存储临时智能大对象的一个或多
个临时 sbspace。用逗号分隔临时 sbspace
名称。如果您省略这个属性,则临时智能大
对象存储在由 SBSPACETEMP 配置参数指定

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

元素
描述
关键考虑
的临时 sbspaces 中。
locks
对于没有 DBA 权限的
用户,会话的锁的最大
数。
locks 的值必须为 500 - 2147483647。如果
您省略这个属性,则由
SESSION_LIMIT_LOCKS 配置参数设置锁的数
目。
如果 SESSION_LIMIT_LOCKS 配置参数未
设置,则会话的锁的最大数目为
2147483647。
您可通过设置 IFX_SESSION_LIMIT_LOCKS
环境选项取代会话的 session_limit_locks
属性。
log_mode
日志模式定义:
UNBUFFERED
无缓冲区的数据库日
志记录。
这是缺省值。

ANSI
符合 ANSI 的数据库
日志记录。
BUFFERED
有缓冲区的数据库日
志记录。
NONE
无数据库日志记录。
如果您省略这个属性,则日志记录模式为无
缓冲区的。
case
大小写定义:
INSENSITIVE
不区分大小写。这是
缺省值。
SENSITIVE
区分大小写。
如果您省略这个属性,则数据库不缺分大小
写。
locale
数据库的语言环境。
locale 的值与 DB_LOCALE 环境变量的值相
同。
如果您省略这个属性。
则由 DB_LOCALE 环境
变量的值设置语言环境。
缺省语言环境为 US
English。
catalog_dbspace 存储数据库目录的
dbspace 的名称。必须
是由 dbspace 属性罗
如果您省略这个属性,
则 dbspace 属性列表
中的第一个 dbspace 包含数据库目录。

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

元素
描述
关键考虑
列的 dbspace 的名称。


用法
您必须拥有 DBA 权限或被授予 TENANT 权限来运行这个命令。
随同 admin() 或 task() 函数,运行 tenant create 参数来创建 tenant 数据库。创建该数据
库的用户被授予 DBA 权限。
您可在 sysadmin 数据库中的 tenant 中查看 tenant 数据库属
性。
下列语句创建名为 companyA 的 tenant 数据库:
EXECUTE FUNCTION task('tenant create', 'companyA',
'{dbspace:"companyA_dbs1,companyA_dbs2,companyA_dbs3",
sbspace:"companyA_sbs",
vpclass:"tvp_A,num=6",
dbspacetemp:"companyA_tdbs",
session_limit_locks:"1000",
logmode:"ansi"}'
);
该 tenant 数据库有三个专用的 dbspace、一个专用的 sbspace、六个 tenant 虚拟处理器、
一个专用的临时 dbspace,每一会话限定 1000 个锁,且 logmode 为 ANSI。该 tenant 数
据库没有 blobspace,
在由 SBSPACETEMP 配置参数指定的 sbspace 中存储临时智能大对
象,且区分大小写。

重命名函数
使用“重命名函数”功能,您可以重命名您所选择的函数。
在“对象资源管理器”中,右键单击数据库节点下的函数节点中已经创建
好的函数,选择菜单中的“重命名”菜单项,如下图所示:

图 7-73 重命名函数菜单项
选择“重命名”菜单项后,管理器会弹出“重命名函数”对话框,如下图



GBase 8a MPP Cluster 管理工具手册
南大通用数据技术股份有限公司

- 87 -
所示:

图 7-74 重命名函数对话框
您在输入新的函数名称后,可以点击“确定”按钮,对函数名称进行保
存。

功能说明
树结构的数据存放在表中,数据之间的层次关系即父子关系,通过表中的列与列
之间的关系来描述。通过每个节点的父节点,就可以确定整个树的结构。在
SELECT 命令中使用START WITH...CONNECT BY 可以查询表中的树形结构关
系。
分层查询通过CONNECT BY 进行递归,
若探测到cycle,
GBase 8a MPP Cluster
默认会报错退出;
若用户指定NOCYCLE,
GBase 8a MPP Cluster 会返回发生cycle
之前的已查询记录。
语法格式
START WITH...CONNECT BY 语法形式:

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
1087
SELECT column_list|[LEVEL]
FROM [[vc_name.]database_name.]single_table
[WHERE …]
[hierarchical_clause]
[GROUP BY …]
[ORDER [SIBLINGS] BY …]
hierarchical_clause :
[START WITH ] CONNECT BY
| CONNECT BY [START WITH ]
[ORDER SIBLINGS BY {col_name | expr | position} [ASC | DESC] , ...]
connect_condition:
PRIOR expr1 op expr2
| expr1 op PRIOR expr2
| expr op connect_condition
| expr
表5- 102 参数说明
参数名称


LEVEL
伪列,由GBase 8a MPP Cluster 自动维
护;用于标识分层查询结果所在层级,
从1 开始。
START WITH

START WITH 后面的condition 标识分
层查询的所有root rows,
START WITH
子句可以省略。
CONNECT BY

CONNECT BY 后面的condition 标识
parent row 和child row 之间的连接
condition;condition 中的表达式中需要
通过PRIOR 指定该表达式涉及的列出
自parent row 还是child row。如:
... PRIOR expr_left = expr_right
//左表
达式中涉及的列出自parent row;
... expr_left = PRIOR expr_right
//右表
达式中涉及的列出自parent row;
PRIOR
一元操作符,仅用于CONNECT BY 后
面的condition,
用于标识紧接在后面的
表达式中涉及的列出自parent row。
PRIOR 只对于紧接在后面的表达式生
效,如下例:
expr_1 = expr_2 AND expr_3 = PRIOR
expr_4
//PRIOR 只对于expr_4 生效。
PRIOR 不能嵌套使用,如下例会报错:

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
1088
参数名称


PRIOR (expr_1 + PRIOR expr2)
CONNECT_BY_ROOT
一元操作符,
用于获取结果集中每一条
记录对应根记录的某一列值。
参数可以
指定多列、表达式或函数。不能出现在
connect_condition 和join_condition 中。
connect_by_isleaf
伪列,由GBase 8a 自动维护;用于表
示当前层已经是最后一层。0 表示非最
后一层;1 表示最后一层。不能出现在
connect_condition 和join_conditions 中。
connect_by_iscycle
伪列,由GBase 8a 自动维护。用于表
示当前层是否发生cycle。
0 表示未发生
cycle ;1 表示发生cycle 。只有
NOCYCLE 存在才能使用,否则报错。
SYS_CONNECT_BY_PATH(column,char)
函数,
可通过使用指定的字符作为连接
符,
将分层查询结果的某一列按照分层
路径输出。不能出现在
connect_condition 和join_conditions 中。
Where
Where 子句中所有连接条件均在
hierarchical_clause 之前执行,
所有过滤
条件均在hierarchical_clause 之后执行

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
1089
说明

分级查询子句connect by 与start with 不允许出现外层表的列;

分级查询from 子句必须是表,且必须是复制表;

分级查询可以作为子查询出现,但分级查询中不允许出现子查询;

connect by 关联条件不能包含or 操作,并且必须包含父子节点间的等值条
件,等号的两边必须是不同的维度(一边包含prior,一边不包含prior);

prior 是一元操作符,优先级同正负号,只能用在connect by 子句中;prior
后面不可以接伪列(level、rowid 等)、不可以接包含伪列的表达式、不
可以嵌套使用prior、不可以接聚合函数;

order siblings by 只能用在分级查询语句中,
并且不能同聚合、
OLAP 函数、
ORDER BY 同时存在;

不支持实时环路判断,
只能保证最终能够检测出环路,
如果数据量太大
(如
超过十万),会耗时很长才能检测出;

最大节点数为MAX_INT(2147483647)(所有节点数);

新增三个保留字:start、level、prior;

CONNECT BY 后面的condition 不允许包含subquery;
示例
示例1:level 使用在CONNECT BY 位置。
USE test;
DROP TABLE IF EXISTS t1;
CREATE TABLE t1(a int, b int, c char(10), d varchar(20), e varchar(5), f
datetime, g decimal(6,2)) REPLICATED;
INSERT INTO t1 VALUES(0,1,'DMD','kds','dmd','2013-4-1 10:23:01',1.1);
INSERT INTO t1 VALUES(0,3,'DMD','cj','dmd','2013-4-1 10:23:01',2.1);
INSERT INTO t1 VALUES (1,3,'DMD','lm','dmd1','2013-4-1 10:23:01',2.2);
INSERT INTO t1 VALUES (1,4,'DMD','zx','dmd2','2013-4-1 10:23:01',2.3);
DROP TABLE IF EXISTS t2;
CREATE TABLE t2 REPLICATED AS SELECT * FROM t1;
gbase> SELECT level, t1.* FROM t1 CONNECT BY NOCYCLE PRIOR b =
level START WITH a = 0;
+-------+------+------+------------+------+------+---------------------+------+
| level | a
| b
| c
| d
| e
| f
| g
|
+-------+------+------+------------+------+------+---------------------+------+
|
1 |
0 |
1 | DMD
| kds
| dmd
| 2013-04-01 10:23:01 |