返回首页

gbase数据、南大通用产品文档:GBase8aCREATE 8a TABLE

更新日期:2024年09月11日

GBase UP 通过CREATE TABLE 语句可以创建8a 引擎的表格,
CREATE TABLE 以
用户给定的名字在当前数据库创建一个表。用户必须有创建表的权限。
语法格式
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] [database_name.]table_name
(column_definition [,column_definition], ... [, key_options])
[table_options]
[NOCOPIES];
column_definition:
column_name data_type [NOT NULL
| NULL] [DEFAULT default_value] [COMMENT
comment_value] [URI]
key_options:
KEY key_name ('column_name') [key_dc_size = dc_value USING HASH GLOBAL]
table_options:
[REPLICATED | DISTRIBUTED BY ('column_name') ]
[COMMENT 'comment_value']
参数说明

TEMPORARY:该参数为可选参数,创建临时表需要使用此关键字。临时表的
创建请参见“5.4.7.2.1.3 CREATE TEMPORARY TABLE”的内容。

IF NOT EXISTS:该参数为可选参数,
用户可以使用关键字IF NOT EXISTS 创
建表,如果表已经存在,系统将报告WARNING 信息。

GBase UP 产品手册 5 数据库管理指南
文档版本04(2021-04-21) 南大通用数据技术股份有限公司 606

database_name:该参数为可选参数,指定数据库后,在此数据库下创建表。如
果没有显示指定database_name 参数,创建的表隶属于USE database_name 后
的数据中的表。

table_name:表命名规则请参见
“5.8.1.1 数据库、
表、
列和别名”

默认情况下,
在当前数据库中创建表。如果没有指定当前数据库或表已经存在,则报告错误
信息。

column_name:指定表中的数据列。

data_type:指定数据列的数据类型。数据类型参见“错误!未找到引用源。 数
据类型”中的内容。

NOT NULL | NULL:指定数据列的值,是否允许为NULL。如果既没有指定
NULL 也没有指定NOT NULL,列被视为指定了NULL。

default_value:指定数据列的默认值。默认值必须是一个常数,而不能是一个
函数或者一个表达式。举例来说,用户不能将一个数据列的默认值设置为
NOW()或者CURRENT_DATE()之类的函数。对于给定的一个表,可以使用
SHOW CREATE TABLE 语句来查看哪些列有显式DEFAULT 子句。

comment_value:指定数据列的备注说明。例如:stu_no id COMMENT '学号'。


key_options:指定表中的hash 列。同时可以使用key_dc_size 参数指定创建分段
Hash INDEX。
表 5-1 dc_value 值
最小值
最大值
备注
0
2147483646
默认为0(即在整列上创建HASH)

table_options:默认为随机分布表。

REPLICATED:指定是否是复制表。

在创建一个表时,
用户可以使用关键词REPLICATED 来指定是否创建复制表。
如果指定了关键词REPLICATED,那么创建的复制表在GBase UP 的各个节点
上存放的是完整数据。
注意:复制表表名尾部不允许是_n{number}编号,例如,mytable_n1,
mytable_n12 是不允许使用的。

DISTRIBUTED BY column_name:
指定创建表中的物理列column_name 是哈希
列,这样创建的表,称为哈希分布表。哈希列必须是INT 或者VARCHAR 类
型。

key_dc_size = dc_value USING HASH GLOBAL:
配合DISTRIBUTED BY 使用,
指定分段HASH 列,同时创建多个分段HASH 列。

COMMENT:指定表的备注说明。可以用SHOW CREATE TABLE table_name
和SHOW FULL COLUMNS FROM table_name 语句来显示备注信息。

GBase UP 产品手册 5 数据库管理指南
文档版本04(2021-04-21) 南大通用数据技术股份有限公司 607
示例
示例1:创建一张随机分布表。
gbase> CREATE TABLE t1(a int, b int) ;
Query OK, 1 row affected
示例2:创建一张复制表。
gbase> CREATE TABLE t2(a int, b int) REPLICATED;
Query OK, 1 row affected
gbase> SHOW CREATE TABLE t2;
+-------+-----------------------------------------------------------------+
| Table | Create Table |
+-------+-----------------------------------------------------------------+
| t2 | CREATE TABLE "t2" (
"a" int(11) DEFAULT NULL,
"b" int(11) DEFAULT NULL
) ENGINE=EXPRESS REPLICATED DEFAULT CHARSET=utf8 TABLESPACE='sys_tablespace'|
+-------+-----------------------------------------------------------------+
1 row in set
gbase> DESC t2;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| a | int(11) | YES | | NULL | |
| b | int(11) | YES | | NULL | |
+-------+---------+------+-----+---------+-------+
2 rows in set
示例3:创建带有列注释信息的表。

GBase UP 产品手册 5 数据库管理指南
文档版本04(2021-04-21) 南大通用数据技术股份有限公司 608
gbase> CREATE TABLE t1 (f_username varchar(10) comment 'name' ) ;
Query OK, 0 rows affected
gbase> DESC t1;
+------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| f_username | varchar(10) | YES | | NULL | |
+------------+-------------+------+-----+---------+-------+
1 row in set
gbase> SHOW CREATE TABLE t1;
+-------+--------------------------------------------------------+
| Table | Create Table |
+-------+--------------------------------------------------------+
| t1 | CREATE TABLE "t1" (
"f_username" varchar(10) DEFAULT NULL COMMENT 'name'
) ENGINE=EXPRESS DEFAULT CHARSET=utf8 TABLESPACE='sys_tablespace'|
+-------+--------------------------------------------------------+
1 row in set

enable_bbox_dump
参数说明:是否开启黑匣子功能,在系统不配置core 机制的时候仍可产生
core 文件。
该参数属于SIGHUP 类型参数,
请参考表GUC 参数设置方式中对应设置方法进行设置。
取值范围:布尔型

on 表示打开黑匣子功能。

off 表示关闭黑匣子功能。
默认值:on

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
1308
须知:黑匣子功能生成core 文件依赖操作系统开放ptrace 接口。若发生权限不
足(errno = 1),请确保/proc/sys/kernel/yama/ptrace_scope 配置合理。

智能大对象空间中描述的智能大对象空间包含两个组成部分:元数据和用户数据。在缺省
情况下,不记录智能大对象空间。
智能大对象空间的元数据组成部分描述存储在特定智能大对象空间中的智能大对象的关键
特征。元数据包含指向智能大对象的指针。如果元数据要遭受损坏或变得不可访问,那么
智能大对象空间也将损坏,且智能大对象空间中的智能大对象将不可恢复。
即使关闭数据库的日志记录,标准智能大对象空间中的元数据将始终得以记录。记录智能
大对象空间元数据可确保元数据始终恢复为一致的事务状态。但是,不记录临时智能大对
象空间中的元数据。

智能大对象空间日志记录
在记录智能大对象空间时,数据库服务器速度减慢,且逻辑日志迅速填满。如果您对智能
大对象空间使用日志记录,那么必须确保逻辑日志大到足以容纳日志记录数据。有关更多
信息,请参阅估计记录智能大对象时的日志大小。
为数据库打开日志记录后,数据库服务器直至您执行 0 级备份时才开始日志记录。但
是,为智能大对象打开日志记录后,数据库服务器立即开始执行其日志记录更改。要减少
日志条目数,请装入已关闭日志记录的智能大对象,然后再将日志记录重新打开以捕获对
智能大对象的更新。
重要: 在为智能大对象打开日志记录时,必须立即执行 0 级备份,从而可恢复和复原智能大对象。

智能大对象的日志记录
如果用户在频繁更新数据,或如果恢复任何已更新数据的能力很重要,可为智能大对象使
用日志记录。数据库服务器将操作(插入、更新、删除、读取或写入)记录写入逻辑日志
缓冲区。CLOB 或 BLOB 数据的已修改部分包含在日志记录中。
要提高性能,可关闭智能大对象的日志记录。如果用户主要在分析数据而非在频繁更新数
据,或如果数据对于恢复并不重要,也可关闭日志记录。

已更新的智能大对象的日志记录
在更新智能大对象时,数据库服务器不会记录整个对象。假设用户在为智能大对象启用日
志记录的情况下以偏移量 Y 写入 X 字节的数据。数据库服务器将记录以下信息:
• 如果在大对象的末尾设置 Y,那么数据库服务器记录 X 字节(更新的字节范
围)。
• 如果 Y 位于大对象的开始或中间,那么数据库服务器记录以下选项中的最小值:

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 287 -
o 旧映像和新映像之间的差额
o 前映像和后映像
o 如果前映像和后映像相同,那么不记录任何值

关闭或打开智能大对象空间的日志记录
可以使用多种不同的方法来打开或关闭智能大对象空间的日志记录。
如果要在智能大对象空间中使用日志记录,请在创建智能大对象空间时指定 onspaces 命
令的 -Df "LOGGING=ON" 选项。 如果在智能大对象空间中关闭了日志记录,您可在特
定列中为智能大对象打开日志记录。包含智能大对象的一列可在另一列的日志记录关闭期
间打开日志记录。
要验证智能大对象空间中的智能大对象是否已记录,请使用 oncheck -pS sbspace_name |
grep “Create Flags” 命令。
如果在带缺省日志记录选项的智能大对象空间中创建智能大对象,且在输出中看到
LO_NOLOG 标志,那么该智能大对象空间中的智能大对象不会记录。如果在输出中看到
LO_LOG 标志,那么该智能大对象空间中的所有智能大对象均记录。
您可以按以下任一方法来修改智能大对象空间的日志记录状态。
要指定的函数或语句
日志记录操作
参考资料
onspaces -ch -Df
"LOGGING=ON"
onspaces-ch -Df
"LOGGING=OFF"
为现有的智能大对象空间打
开或关闭日志记录
更改智能大对象的存储特征
《GBase 8s 管理员参考》
中 onspaces -ch: 更改
sbspace 缺省规范的内容
使用 set sbspace logging on
或 set sbspace logging off
自变量的 SQL 管理 API
task() 或 admin() 函数
为现有的智能大对象空间打
开或关闭日志记录
《GBase 8s 管理员参考》
中设置智能大对象空间日志
记录自变量:更改智能大对
象空间的日志记录(SQL
管理 API)的内容
CREATE TABLE 或 alter
table 语句的 PUT 子句中
的 LOG 选项
为装入该列的所有智能大对
象打开日志记录
日志记录
PUT 子句
ifx_lo_create GBase 8s
ESQL/C 函数
在最初装入智能大对象之时
关闭它的日志记录
《GBase 8s ESQL/C 程序员
手册》
ifx_lo_alter GBase 8s
ESQL/C 函数
在装入完成后打开日志记录 《GBase 8s ESQL/C 程序员
手册》

智能大对象日志记录
当用 LOG 选项创建智能大对象时,逻辑日志创建智能 BLOB 日志记录。智能 BLOB 日
志记录跟踪对用户数据或元数据的更改。在更新智能大对象时,日志记录中仅包含智能大

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 288 -
对象页的已修改部分。仅当为智能大对象启用了日志记录时,才会在逻辑日志中创建用户
数据日志记录。
警告: 请注意为频繁更新的智能大对象启用日志记录。该日志记录开销可能会显著减慢数据库服务器的
速度。
有关智能大对象的日志记录的信息,请参阅《GBase 8s 管理员参考》中有关解释逻辑日
志记录的章节。

记录智能大对象数据时阻止长事务
您可在单个智能大对象的数据收集过程持续很长时间的情况下使用智能大对象。例如,考
虑记录了许多个小时低质量音频信息的应用程序。虽然收集的数据量可能是最少的,但记
录会话可能很长,导致出现长事务的条件。
提示: 要防止长事务发生,请定期落实对智能大对象的写入。