返回首页

gbase数据、南大通用产品文档:GBase8a新建数据库

更新日期:2024年09月11日

使用本功能,您可以图形化创建数据库。

“数据库导航”
中,
选中
“用户数据库”
要创建数据库的VC集群(如
果不是虚拟集群,
显示默认VC
Default)

右键单击该节点,在弹出菜单中选
择“新建数据库”菜单项,如下图所示:

GBaseDataStudio 管理工具手册
- 22 -
南大通用数据技术股份有限公司
图5- 334 新建数据库菜单
选择新建数据库菜单项后,系统将打开新建数据库对话框,如下图所示:
图5- 335 新建数据库对话框
填写数据库参数名称,点击“确定”按钮,创建成功后将在“数据库”节
点下面显示新建的数据库节点。如下图所示:

GBaseDataStudio 管理工具手册
南大通用数据技术股份有限公司
- 23 -
图5- 336 新建数据库显示

Hint 的错误、冲突及告警
Plan Hint 的结果会体现在计划的变化上,可以通过explain 来查看变化。
Hint 中的错误不会影响语句的执行,
只是不能生效,
该错误会根据语句类型以不同方式
提示用户。对于explain 语句,hint 的错误会以warning 形式显示在界面上,对于非explain
语句,会以debug1 级别日志显示在日志中,关键字为PLANHINT。
hint 的错误分为以下类型:

语法错误
语法规则树归约失败,会报错,指出出错的位置。
例如:
hint 关键字错误,
leading hint 或join hint 指定2 个表以下,
其它hint 未指定表等。
一旦发现语法错误,则立即终止hint 的解析,所以此时只有错误前面的解析完的hint 有效。
例如:
leading((t1 t2)) nestloop(t1) rows(t1 t2 #10)
nestloop(t1)存在语法错误,则终止解析,可用hint 只有之前解析的leading((t1 t2))。

语义错误

表不存在,存在多个,
或在leading 或join 中出现多次,均会报语义错误。

scanhint 中的index 不存在,会报语义错误。

另外,如果子查询提升后,
同一层出现多个名称相同的表,
且其中某个表
需要被hint,hint 会存在歧义,无法使用,需要为相同表增加别名规避。

hint 重复或冲突
如果存在hint 重复或冲突,只有第一个hint 生效,其它hint 均会失效,会给出提示。

hint 重复是指,
hint 的方法及表名均相同。
例如:
nestloop(t1 t2) nestloop(t1

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
575
t2)。

hint 冲突是指,table list 一样的hint,存在不一样的hint,hint 的冲突仅对
于每一类hint 方法检测冲突。
例如:nestloop (t1 t2) hashjoin (t1 t2),则后面与前面冲突,此时hashjoin 的hint 失效。
注意:nestloop(t1 t2)和no mergejoin(t1 t2)不冲突。
leading hint 中的多个表会进行拆解。例如:leading ((t1 t2 t3))会拆解成:leading((t1 t2))
leading(((t1 t2) t3)),此时如果存在leading((t2 t1)),则两者冲突,后面的会被丢弃。
(例
外:
指定内外表的hint 若与不指定内外表的hint 重复,
则始终丢弃不指定内外表的hint。


子链接提升后hint 失效
子链接提升后的hint 失效,会给出提示。通常出现在子链接中存在多个表连接的场景。
提升后,子链接中的多个表不再作为一个整体出现在join 中。

列类型不支持重分布
对于skew hint 来说,目的是为了进行重分布时的调优,所以当hint 列的类型不支持重
分布时,hint 将无效。

hint 未被使用

非等值join 使用hashjoin hint 或mergejoin hint。

不包含索引的表使用indexscan hint 或indexonlyscan hint。

通常只有在索引列上使用过滤条件才会生成相应的索引路径,
全表扫描将
不会使用索引,因此使用indexscan hint 或indexonlyscan hint 将不会使用。

indexonlyscan 只有输出列仅包含索引列才会使用,否则指定时hint 不会
被使用。

多个表存在等值连接时,
仅尝试有等值连接条件的表的连接,
此时没有关
联条件的表之间的路径将不会生成,所以指定相应的leading、join、rows hint 将不
使用,例如:t1 t2 t3 表join,t1 和t2,t2 和t3 有等值连接条件,则t1 和t3 不会优
先连接,leading(t1 t3)不会被使用。

生成stream 计划时,
如果表的分布列与join 列相同,
则不会生成redistribute
的计划;如果不同,且另一表分布列与join 列相同,只能生成redistribute 的计划,

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
576
不会生成broadcast 的计划,指定相应的hint 则不会被使用。

如果子链接未被提升,则blockname hint 不会被使用。

对于skew hint,hint 未被使用可能由于:

计划中不需要进行重分布。

hint 指定的列为包含分布键。

hint 指定倾斜信息有误或不完整,如对于join 优化未指定值。

倾斜优化的GUC 参数处于关闭状态。

下表按字母顺序罗列 GBase 8s ESQL/C 库函数
函数名称
描述
bigintcvasc()
将 C char 类型值转换为 BIGINT 类型数值。
bigintcvdbl()
将 double 类型数值转换为 BIGINT 类型数值。

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 597 -

函数名称
描述
bigintcvdec()
将 decimal 类型数值转换为 BIGINT 类型数值。
bigintcvflt()
将 float 类型数值转换为 BIGINT 类型数值。
bigintcvifx_int8()
将 int8 类型数值转换为 BIGINT 类型数值。
bigintcvint2()
将 int2 类型数值转换为 BIGINT 类型数值。
bigintcvint4()
将 int4 类型数值转换为 BIGINT 类型数值。
biginttoasc()
将 BIGINT 类型值转换为 C char 类型值。
biginttodbl()
将 BIGINT 类型数值转换为 double 类型数值。
biginttodec()
将 BIGINT 类型数值转换为 decimal 类型数值。
biginttoflt()
将 BIGINT 类型数值转换为 float 类型数值。
biginttoifx_int8()
将 BIGINT 类型数值转换为 int8 类型数值。
biginttoint2()
将 BIGINT 类型数值转换为 int2 类型数值。
biginttoint4()
将 BIGINT 类型数值转换为 int4 类型数值。
bycmpr()
比较两组相邻的字节
bycopy()
将字节从一个区域复制到另一个
byfill()
以字符填充指定的区域
byleng()
对字符串中的字节数计数
decadd()
两个 decimal 数值相加
deccmp()
比较两个 decimal 数值
deccopy()
复制 decimal 数值
deccvasc()
将 C char 类型转换为 decimal 类型
deccvdbl()
将 C double 类型转换为 decimal 类型
deccvint()
将 C int2 类型转换为 decimal 类型
deccvlong()
将 C int4 类型转换为 decimal 类型
decdiv()
两个 decimal 数值相除
dececvt()
将 decimal 值转换为 ASCII 字符串
decfcvt()
将 decimal 值转换为 ASCII 字符串
decmul()
两个 decimal 数值相乘
decround()
四舍五入 decimal 数值

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 598 -

函数名称
描述
decsub()
两个 decimal 数值相减
dectoasc()
将 decimal 类型转换为 ASCII 字符串
dectodbl()
将 decimal 类型转换为 C double 类型
dectoint()
将 decimal 类型转换为 C int 类型
dectolong()
将 decimal 类型转换为 C long 类型
dectrunc()
截断 decimal 数值
dtaddinv()
将 interval 值加到 datetime 值
dtcurrent()
取得当前日期和时间
dtcvasc()
将符合 ANSI 的字符串转换为 datetime
dtcvfmtasc()
将字符串转换为 datetime 值
dtextend()
更改 datetime 的限定符
dtsub()
从另一 datetime 减去一个 datetime 值
dtsubinv()
从 datetime 值减去 interval 值
dttoasc()
将 datetime 值转换为符合 ANSI 的字符串
dttofmtasc()
将 datetime 值转换为字符串
GetConnect()
请求显式的连接,并返回指向该连接信息的指针
ifx_cl_card()
返回指定的集合类型主变量的基数
ifx_dececvt()
将 decimal 值转换为 ASCII 字符串(线程安全版
本)
ifx_decfcvt()
将 decimal 值转换为 ASCII 字符串(线程安全版
本)
ifx_getcur_conn_name()
返回当前连接的名称
ifx_getenv()
检索环境变量的值
ifx_getserial8()
返回插入了的 SERIAL8 值
ifx_int8add()
将两个 int8 数值相加
ifx_int8cmp()
比较两个 int8 数值
ifx_int8copy()
复制 int8 数值
ifx_int8cvasc()
将 C char 类型值转换为 int8 类型值
ifx_int8cvdbl()
将 C double 类型值转换为 int8 类型值

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 599 -

函数名称
描述
ifx_int8cvdec()
将 C decimal 类型值转换为 int8 类型值
ifx_int8cvflt()
将 C float 类型值转换为 int8 类型值
ifx_int8cvint()
将 C int2 类型值转换为 int8 类型值
ifx_int8cvlong()
将 C int4 类型值转换为 int8 类型值
ifx_int8div()
两个 int8 数值相除
ifx_int8mul()
两个 int8 数值相乘
ifx_int8tub()
两个 int8 数值相减
ifx_int8toasc()
将 int8 类型值转换为文本字符串
ifx_int8todbl()
将 int8 类型数值转换为 C double 类型值
ifx_int8todec()
将 int8 类型值转换为 decimal 类型值
ifx_int8toflt()
将 int8 类型值转换为 C float 类型值
ifx_int8toint()
将 int8 类型值转换为 C int2 类型值
ifx_int8tolong()
将 int8 类型值转换为 C int4 类型值
ifx_lo_alter()
修改现有的智能大对象的存储特征
ifx_lo_close()
关闭打开的智能大对象
ifx_lo_col_info()
将列级别存储特征取至 LO 规范结构内
ifx_lo_copy_to_file()
将智能大对象复制到操作系统文件
ifx_lo_copy_to_lo()
将操作系统文件复制到打开的智能大对象
ifx_lo_create()
为智能大对象创建 LO 描述符
ifx_lo_def_create_spec()
分配 LO 规范结构,并将它的字段初始化为空值
ifx_lo_filename()
返回生成的文件名称,
给定 LO 描述符和文件规范
ifx_lo_from_buffer()
将字节从用户定义的缓冲区复制到智能大对象
ifx_lo_open()
打开现有的智能大对象
ifx_lo_read()
从打开的智能大对象读取指定的字节数
ifx_lo_readwithseek()
在打开的智能大对象中寻找指定的文职,并读取指
定的字节数
ifx_lo_release()
释放与临时的智能大对象相关联的资源
ifx_lo_seek()
为了对打开的智能大对象的下一次读或写设置寻找
位置

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 600 -

函数名称
描述
ifx_lo_spec_free()
释放分配给 LO 规范结构的资源
ifx_lo_specget_estbytes()
从 LO 规范结构取得估计的字节数
ifx_lo_specget_extsz()
从 LO 规范结构取得分配 extent 大小
ifx_lo_specget_flags()
从 LO 规范结构缺的创建时间标志
ifx_lo_specget_maxbytes()
从 LO 规范结构取得最大字节数
ifx_lo_specget_sbspace()
从 LO 规范结构取得 sbspace 的名称
ifx_lo_specset_estbytes()
从 LO 规范结构设置估计的字节数
ifx_lo_specset_extsz()
在 LO 规范结构中设置分配 extent 大小
ifx_lo_specset_flags()
在 LO 规范结构中设置创建时间标志
ifx_lo_specset_maxbytes()
在 LO 规范结构中设置最大字节数
ifx_lo_specset_sbspace()
在 LO 规范结构中设置 sbspace 的名称
ifx_lo_stat()
返回关于打开的智能大对象的状态信息
ifx_lo_stat_atime()
返回智能大对象的最后访问时间
ifx_lo_stat_cspec()
对于指定的智能大对象,
将存储特征返回至 LO 规
范结构内
ifx_lo_stat_ctime()
对于智能大对象,返回最后的状态更改时间
ifx_lo_stat_free()
释放分配给 LO 状态结构的资源
ifx_lo_stat_mtime_sec()
对于智能大对象,返回以秒计的最后修改时间
ifx_lo_stat_refcnt()
返回对于智能大对象的引用计数
ifx_lo_stat_size()
返回智能大对象的大小
ifx_lo_tell()
返回打开的智能大对象的当前寻找位置
ifx_lo_to_buffer()
将字节从智能大对象复制至用户定义的缓冲区内
ifx_lo_truncate()
将智能大对象截断到特定的偏移量
ifx_lo_write()
将指定的字节数写到打开的智能大对象
ifx_lo_writewithseek()
在打开的智能大对象中寻找指定的位置,并写指定
的字节数
ifx_lvar_alloc()
当访存 lvarchar 数据时,指定是否分配内存
ifx_putenv()
修改或移除现有的环境变量,或创建一个新的
ifx_var_alloc()
为数据缓冲区分配内存

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 601 -

函数名称
描述
ifx_var_dealloc()
为数据缓冲区释放内存
ifx_var_flag()
确定是由 GBase 8s ESQL/C,还是由应用程序来为
数据缓冲区处理内存分配
ifx_var_getdata()
返回数据缓冲区的内容
ifx_var_getlen()
返回数据缓冲区的长度
ifx_var_isnull()
检查数据缓冲区中的数据是否为空
ifx_var_setdata()
为数据缓冲区设置数据
ifx_var_setlen()
设置数据缓冲区的长度
ifx_var_setnull()
将数据缓冲区中的数据设置为空值
incvasc()
将符合 ANSI 的字符串转换为 interval 值
incvfmtasc()
将字符串转换为 interval 值
intoasc()
将 interval 值转换为符合 ANSI 的字符串
intofmtasc()
将 interval 值转换为字符串
invdivdbl()
将 interval 值除以一个数值值
invdivinv()
将 interval 值除以一个 interval 值
invextend()
在不同的限定符之下复制 interval 值
invmuldbl()
interval 值乘以数值值
ldchar()
将定长字符串复制到以空结尾的字符串
rdatestr()
将内部的格式转换为字符串
rdayofweek()
返回星期几
rdefmtdate()
将字符串转换为内部的格式
rdownshift()
将所有字母转换为小写
ReleaseConnect()
关闭建立了的显式连接
rfmtdate()
将内部的格式转换为字符串
rfmtdec()
将 decimal 类型转换为格式化的字符串
rfmtdouble()
将 double 类型转换为字符串
rfmtlong()
将 int4 转换为格式化的字符串
rgetlmsg()
对于大型错误编号,检索错误消息
rgetmsg()
对于错误编号,检索错误消息

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 602 -

函数名称
描述
risnull()
检查 C 变量是否为空
rjulmdy()
返回来自内部格式的月、日和年
rleapyear()
确定指定的年是否为闰年
rmdyjul()
从月、日和年返回内部的格式
rsetnull()
将 C 变量设置为空
rstod()
将字符串转换为 double 类型
rstoi()
将以空结尾的字符串转换为 int2
rstol()
将字符串转换为 int4
rstrdate()
将字符串转换为内部的格式
rtoday()
以内部的格式返回系统日期
rtypalign()
将数据对其恰当的类型边界
rtypmsize()
给定 SQL 数据类型的字节大小
rtypname()
返回指定的 SQL 类型的名称
rtypwidth()
给定最小转换字节大小
rupshift()
将所有字母转换为大写
SetConnect()
将连接切换到建立了的(休眠的)显式连接
sqgetdbs()
返回数据库服务器可连接的数据库的名称
sqlbreak()
发送请求给数据库服务器,来停止处理
sqlbreakcallback()
提供返回控制的方法给应用程序,在它等待数据库
服务器处理 SQL 请求时
sqldetach()
将子进程从父进程脱离
sqldone()
确定数据库服务器当前是否正在处理 SQL 请求
sqlexit()
终止数据库服务器进程
sqlsignal()
执行信号处理和子进程清理
sqlstart()
启动数据库服务器进程
stcat()
将一个字符串连接到另一个
stchar()
将以空结尾的字符串复制到定长字符串
stcmpr()
比较两个字符串
stcopy()
将一个字符串复制到另一字符串

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 603 -

函数名称
描述
stleng()
对字符串中的字节数计数