技术分享|GBase 8a数据库对象管理-table

 CREATE TABLE

功能说明

CREATE TABLE以用户给定的名字在当前数据库创建一个表。用户必须有创建表的权限。

Ø 语法格式

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] [vc_name.][database_name.]table_name 

(column_definition [ , column_definition],  ... [,  key_options])

[table_options]

[partition_options]

column_definition:

column_name data_type [NOT NULL | NULL] [DEFAULT default_value]

key_options:

KEY "index_name" ("column_name") KEY_BLOCK_SIZE=<VALUSE> KEY_DC_SIXE=<dc_value> USIONG HASH GLOBAL

table_options:

[COMMENT 'comment_value']

partition_options:

    PARTITION BY

        { RANGE(expr)

| LIST(expr)

| LINEAR] HASH(expr)

         | [LINEAR] KEY(column_list)}

    [PARTITIONS num]

    [SUBPARTITION BY

        { [LINEAR] HASH(expr)

        | [LINEAR] KEY(column_list) }

      [SUBPARTITIONS num]

    ]

    [(partition_definition [, partition_definition] ...)]

partition_definition:

    PARTITION partition_name

        [VALUES

            {LESS THAN {(expr | value_list) | MAXVALUE}

            |

            IN (value_list)}]

        [(subpartition_definition [, subpartition_definition] ...)]

subpartition_definition:

    SUBPARTITION logical_name

参数名称

说  明

TEMPORARY

该参数为可选参数,创建临时表需要使用此关键字。

PARTITION BY

该参数为可选参数,创建分区表时使用此关键字。分区表的创建请参见“CREATE TABLE PARTITION”小节的内容。

IF NOT EXISTS

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

vc_name

该参数为可选参数,指定虚拟集群后,在此虚拟集群下创建数据库和表。如果没有显示指定vc_name参数,创建的数据库隶属于USE VC vc_name后的虚拟集群。

database_name

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

table_name

表命名规则请参见“数据库、表、索引、列和别名”小节。默认情况下,在当前数据库中创建表。如果没有指定当前数据库或表已经存在,则报告错误信息。

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索引。

index_name

指定要创建的索引名称

index_column_name

指定要创建的索引列名

KEY_DC_SIZE=dc_value

指定HASH索引的分段大小。dc_value最大值为2147483646,最小值为0。默认为0表示在整列上创建HASH索引。

USING HASH GLOBAL

指定HASH索引为全局索引。

table_options

默认为随机分布表。

REPLICATED

使用关键词REPLICATED创建复制表。复制表在GBase 8a MPP Cluster的各个data节点上存放的是完整数据。

DISTRIBUTED BY column_name

指定创建表中的物理列column_name是哈希列,这样创建的表,称为哈希分布表。哈希列可以是整数类型(INT、BIGINT等)、VARCHAR或者DECIMAL类型

COMMENT

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

COMPRESS

指定表级的数据压缩属性,包含字符类型的压缩属性值和数值类型的压缩属性值。

注意

l 复制表表名尾部不允许是_n{number}结尾,例如mytable_n1,mytable_n12是不允许使用的。

l 执行OGG Kafka数据同步时,需要HASH分布列的值不能为空

Ø 示例

Ø 示例1:创建一张普通表。

gbase> CREATE TABLE t1(a int , b varchar(50) NOT NULL DEFAULT 'gbase');

Query OK, 0 rows affected

gbase> DESC t1;

+-------+-------------+------+-----+---------+-------+

| Field | Type        | Null | Key | Default | Extra |

+-------+-------------+------+-----+---------+-------+

| a     | int(11)     | YES  |     | NULL    |       |

| b     | varchar(50) | NO   |     | gbase   |       |

+-------+-------------+------+-----+---------+-------+

2 rows in set

Ø 示例2:创建带有列注释信息的表。

gbase> DROP TABLE IF EXISTS t1;

Query OK, 0 rows affected

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'

)                                                          |

+-------+--------------------------------------------------+

1 row in set

CREATE TABLE...AS SELECT...

功能说明

根据列定义以及投影列创建表结构,并且将SELECT中查询的数据复制到所创建的表中。

语法格式

CREATE TABLE [vcname.][dbname.] table_name [(column_definition,...)] [REPLICATED | DISTRIBUTED BY (col_name) ] [AS] SELECT ...;

 72 参数说明

参数名称

说  明

AS

指定SELECT语句,可选关键字。

其他参数说明请参见“CREATE TABLE”小节参数说明部分的内容。

Ø 示例

Ø 示例1:复制全表表结构及数据来创建随机分布表。

gbase> CREATE TABLE t7(a int, b decimal(10,5), c float, d datetime);

Query OK, 0 rows affected

gbase> INSERT INTO t7 VALUES(1,2.234,3.345,'2019-11-11 11:11:11'), (3,4.567,5.678,'2019-11-11 22:22:22');

Query OK, 2 rows affected

Records: 2  Duplicates: 0  Warnings: 0

gbase> CREATE TABLE t8 SELECT * FROM t7;

Query OK, 2 rows affected

gbase> SELECT * FROM t8;

+------+---------+-------+---------------------+

| a    | b       | c     | d                   |

+------+---------+-------+---------------------+

|    1 | 2.23400 | 3.345 | 2019-11-11 11:11:11 |

|    3 | 4.56700 | 5.678 | 2019-11-11 22:22:22 |

+------+---------+-------+---------------------+

2 rows in set

Ø 示例2:按列复制部分表结构及数据创建按指定列分布的哈希分布表。

gbase> CREATE TABLE t9 distributed by('a') SELECT a,b FROM t7;

Query OK, 2 rows affected

Records: 2  Duplicates: 0  Warnings: 0

gbase> SELECT * FROM t9;

+------+------+

| a    | b    |

+------+------+

|    1 |    2 |

|    3 |    5 |

+------+------+

2 rows in set

Ø 示例3:按照条件过滤复制部分表结构及数据创建随机分布表。

gbase> DROP TABLE IF EXISTS t10;

Query OK, 0 rows affected

gbase> CREATE TABLE t10 SELECT a,b FROM t7 where d>'2019-11-11 11:11:11';

Query OK, 1 row affected

Records: 1  Duplicates: 0  Warnings: 0

gbase>  SELECT * FROM t10;

+------+------+

| a    | b    |

+------+------+

|    3 |    5 |

+------+------+

1 row in set

Ø 示例4:按照联合查询的结果复制部分表结构及数据创建随机分布表。

gbase> DROP TABLE IF EXISTS t11;

Query OK, 0 rows affected

gbase> CREATE TABLE t11 SELECT a,b FROM t7 where d>'2019-11-11 11:11:11' UNION ALL SELECT a,b FROM t7 where d='2019-11-11 11:11:11';

Query OK, 2 rows affected

Records: 2  Duplicates: 0  Warnings: 0

gbase> SELECT * FROM t11;

+------+------+

| a    | b    |

+------+------+

|    3 |    5 |

|    1 |    2 |

+------+------+

2 rows in set

1.1.1.1.1.3 CREATE TABLE...LIKE...

功能说明

复制table_name2的表结构来创建表table_name1。

语法格式

CREATE TABLE [vc_name.][db_name.]table_name1 LIKE table_name2;

示例

Ø 示例1:创建随机分布表。

gbase> DROP TABLE IF EXISTS t5;

Query OK, 0 rows affected

gbase> CREATE TABLE t5(a int,b datetime);

Query OK, 0 rows affected

gbase> INSERT INTO t5 VALUES(1,NOW());

Query OK, 1 row affected

gbase> CREATE TABLE t6 LIKE t5;

Query OK, 0 rows affected

gbase> SHOW CREATE TABLE t6;

+-------+---------------------------------------------------------+

| Table | Create Table                                            |

+-------+---------------------------------------------------------+

| t6    | CREATE TABLE "t6" (

  "a" int(11) DEFAULT NULL,

  "b" datetime DEFAULT NULL

) ENGINE=EXPRESS DEFAULT CHARSET=utf8 TABLESPACE='sys_tablespace' |

+-------+---------------------------------------------------------+

1 row in set

gbase> SELECT * FROM t6;

Empty set

CREATE TEMPORARY TABLE ...

功能说明

在创建一个表时,用户可以使用关键词TEMPORARY。临时表被限制在当前连接中,当连接关闭时,临时表会自动地删除。这就意味着,两个不同的连接可以使用同一个临时表名而不会发生冲突,也不会与现有同名表冲突(现有表将被隐藏,直到临时表被删除)。

语法格式

CREATE TEMPORARY TABLE [IF NOT EXISTS] [vc_name.][db_name.]table_name [(column_definition,...)] [REPLICATED | DISTRIBUTED BY (col_name) ] ;

注意

l 临时表支持除ALTER之外的所有DDL及DML操作。

l 临时表不能被备份。

l 临时表支持在当前连接中使用查询结果导出语句导出表中数据。

Ø  

示例

示例1:创建临时表。

gbase> CREATE TEMPORARY TABLE tem_table (a int);

Query OK, 0 rows affected

gbase> INSERT INTO tem_table (a) values (1);

Query OK, 1 row affected

gbase> INSERT INTO tem_table (a) values (2);

Query OK, 1 row affected

gbase> SELECT * FROM tem_table;

+------+

| a    |

+------+

|    1 |

|    2 |

+------+

2 rows in set

gbase> EXIT;

Bye

$ gbase -uroot -p

Enter password:

GBase client 9.5.2.20.117651. Copyright (c) 2004-2020, GBase.  All Rights Reserved.

gbase> USE test;

Query OK, 0 rows affected

gbase> SELECT * FROM tem_table;

ERROR 1146 (42S02): Table 'test.tem_table' doesn't exist

 CREATE TABLE PARTITION

功能说明

分区表是根据一定规则,将数据库中的一张表分解成多个更小的容易管理的部分,从逻辑上看,只有一张表,但底层却是由多个物理分区组成。

分区表包括普通分区表和子分区表。

目前常用的分区方法有RANGE分区、LIST分区、KEY分区、HASH分区,在分区的管理上目前支持创建分区、添加分区、删除分区。

RANGE分区表和LIST分区表支持子分区,子分区的分区类型可以为[LINEAR] HASH和[LINEAR] KEY。

information_schema.partitions中可以查到所创建的分区表信息。

分区表支持分区列类型:

数值型:INT,BIGINT,SMALLINT,FLOAT。

时间类型(作为分区函数的输入值使用):DATE,DATETIME,TIME。

支持分区函数:

abs()

ceiling()

ceil()

datediff()

day()

dayofmonth()

dayofweek()

dayofyear()

floor()

hour()

microsecond()

minute()

mod()

month()

quarter()

second()

time_to_sec()

to_days()

to_seconds()

weekday()

year()

yearweek()

+

-

*

/

div

%

extract()

from_days()

 

 注意

l 包括子分区在内所有分区总和个数不大于8192;

l 创建分区表过程中,磁盘空间不足,报错;

l 创建分区表过程中,分区名字有重复,报错;

l 创建分区表过程中,分区名字不符合命名规范,报错,分区表命名规范与普通表一致;

l 不支持每个分区指定不同的tablespace;

l 创建分区表时未指定分区名,分区名默认为p0,p1…;

l 分区列不支持update操作;

l 每个分区的子分区个数必须相同;

只有range分区与list分区可以创建子分区。

创建RANGE分区表

语法格式

partition_options:

    PARTITION BY RANGE(expr)

    (partition_definition [, partition_definition] ...)

[SUBPARTITION BY]

{  [LINEAR] HASH(expr)

|  [LINEAR] KEY(column_list) }

[SUBPARTITIONS num]

partition_definition:

    PARTITION partition_name

        VALUES LESS THAN {(expr) | MAXVALUE}

    [(subpartition_definition [, subpartition_definition] ...)]

subpartition_definition:

SUBPARTITION logical_name

说明

l expr是某列值或一个基于某个列值、并返回一个整数值的表达式;

l 各分区的expr列表的值必须递增。

示例

Ø 示例1:创建RANGE分区表。

gbase> CREATE TABLE t1 (

    ->   a int(11) DEFAULT NULL,

    ->   b varchar(10) DEFAULT NULL

    -> ) REPLICATED PARTITION BY RANGE (a)

    -> (PARTITION p0   VALUES LESS THAN (10) ,

    ->  PARTITION p1   VALUES LESS THAN (20) ,

    ->  PARTITION p2   VALUES LESS THAN (30) ,

    ->  PARTITION p3  VALUES LESS THAN (40) ) ;

Query OK, 0 rows affected (Elapsed: 00:00:00.11)

Ø 示例2:创建RANGE分区表,带hash子分区,不指定子分区名。

gbase> create table t1 (id int, dt date)

    -> partition by range (id)

    -> subpartition by hash (quarter(dt))

    -> subpartitions 4

    -> (

    -> partition p0 values less than (1990),

    -> partition p1 values less than (2000),

    -> partition p2 values less than maxvalue

    -> );

Query OK, 0 rows affected (Elapsed: 00:00:00.17)

Ø 示例3:创建RANGE分区表,带hash子分区,指定子分区名。

gbase> create table t1 (id int, dt date)

    -> partition by range (id)

    -> subpartition by hash (quarter(dt))

    -> (

    -> partition p0 values less than (1990)

    -> (

    -> subpartition part0_一季度,

    -> subpartition part0_q2,

    -> subpartition part0_q3,

    -> subpartition part0_q4

    -> ),

    -> partition p1 values less than (2000)

    -> (

    -> subpartition part1_q1,

    -> subpartition part1_二季度,

    -> subpartition part1_q3,

    -> subpartition part1_q4

    -> ),

    -> partition p2 values less than maxvalue

    -> (

    -> subpartition part2_q1,

    -> subpartition part2_q2,

    -> subpartition part2_q3,

    -> subpartition part2_四季度

    -> )

    -> );

Query OK, 0 rows affected (Elapsed: 00:00:00.16)

Ø 示例4:创建RANGE分区表,带key子分区,不指定子分区名。

gbase> create table t1 (id int, dt date)

    -> partition by range (id)

    -> subpartition by key (dt)

    -> subpartitions 4

    -> (

    -> partition p0 values less than (1990),

    -> partition p1 values less than (2000),

    -> partition p2 values less than maxvalue

    -> );

Query OK, 0 rows affected (Elapsed: 00:00:00.16)

Ø 示例5:创建RANGE分区表,带key子分区,指定子分区名。

gbase> create table t1 (id int, dt date)

    -> partition by range (id)

    -> subpartition by key (dt)

    -> (

    -> partition p0 values less than (1990)

    -> (

    -> subpartition part0_一季度,

    -> subpartition part0_q2,

    -> subpartition part0_q3,

    -> subpartition part0_q4

    -> ),

    -> partition p1 values less than (2000)

    -> (

    -> subpartition part1_q1,

    -> subpartition part1_二季度,

    -> subpartition part1_q3,

    -> subpartition part1_q4

    -> ),

    -> partition p2 values less than maxvalue

    -> (

    -> subpartition part2_q1,

    -> subpartition part2_q2,

    -> subpartition part2_q3,

    -> subpartition part2_四季度

    -> )

    -> );

Query OK, 0 rows affected (Elapsed: 00:00:00.16)

创建LIST分区

语法格式

partition_options:

    PARTITION BY LIST(expr)

    (partition_definition [, partition_definition] ...)

[SUBPARTITION BY]

  {  [LINEAR] HASH(expr) |  [LINEAR] KEY(column_list) }

[SUBPARTITIONS num]

partition_definition:

    PARTITION partition_name

        VALUES IN (value_list)

    [(subpartition_definition [, subpartition_definition] ...)]

subpartition_definition:

    SUBPARTITION logical_name

说明

l expr是某列值或一个基于某个列值、并返回一个整数值的表达式;

l value_list是一个通过逗号分隔的整数列表。

示例

Ø 示例1:创建LIST分区表。

gbase> create table t1 (a int, b varchar(10))

    -> partition by list(a) (

    ->     partition p0 values in (3,5,6,9,17),

    ->     partition p1 values in (1,2,10,11,19,20),

    ->     partition p2 values in (4,12,13,14,18),

    ->     partition p3 values in (7,8,15,16)

    -> );

Query OK, 0 rows affected (Elapsed: 00:00:00.11)

Ø 示例2:创建LIST分区表,带hash子分区,不指定子分区名。

gbase> create table t1 (a int, b int)

    -> partition by list(a)

    -> subpartition by hash (b)

    -> subpartitions 4

    -> (

    ->     partition p0 values in (3,5,6,9,17),

    ->     partition p1 values in (1,2,10,11,19,20),

    ->     partition p2 values in (4,12,13,14,18)

    -> );

Query OK, 0 rows affected (Elapsed: 00:00:00.16)

Ø 示例3:创建LIST分区表,带hash子分区,指定子分区名。

gbase> create table t1 (a int, b int)

    -> partition by list(a)

    -> subpartition by hash (b)

    -> (

    -> partition p0 values in (3,5,6,9,17)

    -> (

    -> subpartition part0_q1,

    -> subpartition part0_q2,

    -> subpartition part0_q3,

    -> subpartition part0_q4

    -> ),

    -> partition p1 values in (1,2,10,11,19,20)

    -> (

    -> subpartition part1_q1,

    -> subpartition part1_q2,

    -> subpartition part1_q3,

    -> subpartition part1_q4

    -> ),

    -> partition p2 values in (4,12,13,14,18)

    -> (

    -> subpartition part2_q1,

    -> subpartition part2_q2,

    -> subpartition part2_q3,

    -> subpartition part2_q4

    -> )

    -> );

Query OK, 0 rows affected (Elapsed: 00:00:00.16)

Ø 示例4:创建LIST分区表,带key子分区,不指定子分区名。

gbase> create table t1 (a int, b int)

    -> partition by list(a)

    -> subpartition by key (b)

    -> subpartitions 4

    -> (

    ->     partition p0 values in (3,5,6,9,17),

    ->     partition p1 values in (1,2,10,11,19,20),

    ->     partition p2 values in (4,12,13,14,18)

    -> );

Query OK, 0 rows affected (Elapsed: 00:00:00.16)

Ø 示例5:创建LIST分区表,带key子分区,指定子分区名。

gbase> create table t1 (a int, b int)

    -> partition by list(a)

    -> subpartition by key (b)

    -> (

    -> partition p0 values in (3,5,6,9,17)

    -> (

    -> subpartition part0_q1,

    -> subpartition part0_q2,

    -> subpartition part0_q3,

    -> subpartition part0_q4

    -> ),

    -> partition p1 values in (1,2,10,11,19,20)

    -> (

    -> subpartition part1_q1,

    -> subpartition part1_q2,

    -> subpartition part1_q3,

    -> subpartition part1_q4

    -> ),

    -> partition p2 values in (4,12,13,14,18)

    -> (

    -> subpartition part2_q1,

    -> subpartition part2_q2,

    -> subpartition part2_q3,

    -> subpartition part2_q4

    -> )

    -> );

Query OK, 0 rows affected (Elapsed: 00:00:00.18)

创建HASH分区

语法格式

partition_options:

PARTITION BY [LINEAR] HASH(expr)

[PARTITIONS num]

[(partition_definition [, partition_definition] ...)]

partition_definition:

PARTITION partition_name

说明

l expr是一个返回一个整数的表达式,也可以是字段类型为整型的物理列的名字;

l 创建分区表过程中,num大于8192,报错;

l 创建分区表过程中,num等于0,报错。

示例

Ø 示例1:创建hash分区表

gbase> create table t1 (a int, b varchar(10)) partition by hash(a);

Query OK, 0 rows affected (Elapsed: 00:00:00.09)

创建KEY分区

Ø 语法格式

partition_options:

PARTITION BY [LINEAR] KEY(column_list)

[PARTITIONS num]

[(partition_definition [, partition_definition] ...)]

partition_definition:

PARTITION partition_name

说明

l column_list是只采用一个或多个列名的一个列表;

l 创建分区表过程中,num大于8192,报错;

l 创建分区表过程中,num等于0,报错。

示例

Ø 示例1:创建key分区表

gbase> create table t1 (a int, b varchar(10))partition by key(a);

Query OK, 0 rows affected (Elapsed: 00:00:00.08)

1.1.1.1.1.5.5 创建分区表支持分布、复制属性

示例

Ø 示例1:创建hash分区表

gbase> create table t1 (a int, b varchar(10)) distributed by ('a') partition by key(a);  

Query OK, 0 rows affected (Elapsed: 00:00:00.09)

Ø 示例2:创建复制分区表

gbase> create table t2 (a int, b varchar(10))replicated partition by key(a);

Query OK, 0 rows affected (Elapsed: 00:00:00.10)

多列hash表创建

功能说明

CREATE TABLE的时候可以指定多个列作为HASH列。

语法格式

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] [vc_name.][database_name.]table_name 

(column_definition [,column_definition], ... [,  key_options])

[table_options]

[NOCOPIES];

table_options:

[REPLICATED | DISTRIBUTED BY ('column_name’,’column_name1’,...) ]

[COMMENT 'comment_value']

示例

gbase> create table x0( entry_id int, id2 int, id3 int,id4 int ) distributed by('id3','id4');

Query OK, 0 rows affected (Elapsed: 00:00:00.08)

1.1.1.1.2 ALTER TABLE

语法格式

ALTER TABLE [vc_name.][database_name.]table_name

    alter_specification [, alter_specification] ...

alter_specification:

  ADD [COLUMN] column_definition [FIRST | AFTER col_name ]

  | ADD [COLUMN] (column_definition,...)

  | CHANGE [COLUMN] old_col_name new_col_name column_definition

  | MODIFY [COLUMN] col_name column_definition

        [FIRST | AFTER col_name]

  | RENAME [TO] new_table_name

  | DROP [COLUMN] col_name

 7-3 参数说明

参数名称

说  明

vc_name

虚拟集群名称,可选项。

database_name

数据库名称,可选项。

ADD [COLUMN] (column_definition,...)

用于增加新的数据列,如果使用FIRST,则新增加的列位于所有数据列的前面;如果使用AFTER,则新增加的列,位于指定数据列的后面。默认不使用FIRST、AFTER,则将新增加的列追加到末尾处。

CHANGE [COLUMN] old_col_name new_col_name column_definition

修改列名称。不支持修改列定义。

MODIFY [COLUMN] col_name column_definition FIRST | AFTER col_name

修改表中存在列的位置。不支持修改列定义。

RENAME [TO] new_table_name

修改表名称为new_table_name。

DROP [COLUMN] col_name

删除表中存在的列。

注意

l 目前已经支持的有增加列、删除列、改表名、改列名、改变列的位置;

l 不支持的有ORDER BY、改变列的数据类型、改变列的属性(NOT NULL,默认值)、改变表的字符集;

l 新增列的限制有:

n 对于新增加的列,如果设置了NOT NULL,则需要同时设置默认值,否则报错;

n 不允许非EXPRESS引擎的表与EXPRESS表互转。

示例

Ø 示例1:增加列:

gbase> DROP TABLE IF EXISTS t;

Query OK, 0 rows affected

gbase> CREATE TABLE t (a int NOT NULL DEFAULT 1, b varchar(10));

Query OK, 0 rows affected

gbase> DESC t;

+-------+-------------+------+-----+---------+-------+

| Field | Type        | Null | Key | Default | Extra |

+-------+-------------+------+-----+---------+-------+

| a     | int(11)     | NO   |     | 1       |       |

| b     | varchar(10) | YES  |     | NULL    |       |

+-------+-------------+------+-----+---------+-------+

2 rows in set

gbase> ALTER TABLE t ADD column c varchar(10) null;

Query OK, 0 rows affected

Records: 0  Duplicates: 0  Warnings: 0

gbase> DESC t;

+-------+-------------+------+-----+---------+-------+

| Field | Type        | Null | Key | Default | Extra |

+-------+-------------+------+-----+---------+-------+

| a     | int(11)     | NO   |     | 1       |       |

| b     | varchar(10) | YES  |     | NULL    |       |

| c     | varchar(10) | YES  |     | NULL    |       |

+-------+-------------+------+-----+---------+-------+

3 rows in set

Ø 示例2:删除列。

gbase> DROP TABLE IF EXISTS t;

Query OK, 0 rows affected

gbase> CREATE TABLE t (a int NOT NULL DEFAULT 1, b varchar(10));

Query OK, 0 rows affected

gbase> DESC t;

+-------+-------------+------+-----+---------+-------+

| Field | Type        | Null | Key | Default | Extra |

+-------+-------------+------+-----+---------+-------+

| a     | int(11)     | NO   |     | 1       |       |

| b     | varchar(10) | YES  |     | NULL    |       |

+-------+-------------+------+-----+---------+-------+

2 rows in set

gbase> ALTER TABLE t DROP column b;

Query OK, 0 rows affected

Records: 0  Duplicates: 0  Warnings: 0

gbase> DESC t;

+-------+---------+------+-----+---------+-------+

| Field | Type    | Null | Key | Default | Extra |

+-------+---------+------+-----+---------+-------+

| a     | int(11) | NO   |     | 1       |       |

+-------+---------+------+-----+---------+-------+

1 row in set

Ø 示例3:变更表名称。

gbase> SHOW TABLES;

+--------------+

| Tables_in_ty |

+--------------+

| t            |

+--------------+

1 row in set

gbase> ALTER TABLE t RENAME ttt2;

Query OK, 0 rows affected

gbase> SHOW TABLES;

+--------------+

| Tables_in_ty |

+--------------+

| ttt2         |

+--------------+

1 row in set

Ø 示例4:变更列名b为新列名d。

gbase> CREATE TABLE t (a int not null,b varchar(10),c varchar(10));

Query OK, 0 rows affected

gbase> DESC t;

+-------+-------------+------+-----+---------+-------+

| Field | Type        | Null | Key | Default | Extra |

+-------+-------------+------+-----+---------+-------+

| a     | int(11)     | NO   |     | NULL    |       |

| b     | varchar(10) | YES  |     | NULL    |       |

| c     | varchar(10) | YES  |     | NULL    |       |

+-------+-------------+------+-----+---------+-------+

3 rows in set

gbase> ALTER TABLE t  CHANGE  b  d varchar(10);

Query OK, 0 rows affected

Records: 0  Duplicates: 0  Warnings: 0

gbase> DESC t;

+-------+-------------+------+-----+---------+-------+

| Field | Type        | Null | Key | Default | Extra |

+-------+-------------+------+-----+---------+-------+

| a     | int(11)     | NO   |     | NULL    |       |

| d     | varchar(10) | YES  |     | NULL    |       |

| c     | varchar(10) | YES  |     | NULL    |       |

+-------+-------------+------+-----+---------+-------+

3 rows in set

Ø 示例5:变更列的位置至最前。

gbase> DROP TABLE IF EXISTS t;

Query OK, 0 rows affected

gbase> CREATE TABLE t(a int ,b varchar(10),c bool);

Query OK, 0 rows affected

gbase> DESC t;

+-------+-------------+------+-----+---------+-------+

| Field | Type        | Null | Key | Default | Extra |

+-------+-------------+------+-----+---------+-------+

| a     | int(11)     | YES  |     | NULL    |       |

| b     | varchar(10) | YES  |     | NULL    |       |

| c     | tinyint(1)  | YES  |     | NULL    |       |

+-------+-------------+------+-----+---------+-------+

3 rows in set

gbase> ALTER TABLE t  MODIFY b varchar(10) FIRST;

Query OK, 0 rows affected

Records: 0  Duplicates: 0  Warnings: 0

gbase> DESC t;

+-------+-------------+------+-----+---------+-------+

| Field | Type        | Null | Key | Default | Extra |

+-------+-------------+------+-----+---------+-------+

| b     | varchar(10) | YES  |     | NULL    |       |

| a     | int(11)     | YES  |     | NULL    |       |

| c     | tinyint(1)  | YES  |     | NULL    |       |

+-------+-------------+------+-----+---------+-------+

3 rows in set

Ø 示例6:变更某列的位置到指定列的后面。

gbase> ALTER TABLE t MODIFY b varchar(10) AFTER c;

Query OK, 0 rows affected

Records: 0  Duplicates: 0  Warnings: 0

gbase> DESC t;

+-------+-------------+------+-----+---------+-------+

| Field | Type        | Null | Key | Default | Extra |

+-------+-------------+------+-----+---------+-------+

| a     | int(11)     | YES  |     | NULL    |       |

| c     | tinyint(1)  | YES  |     | NULL    |       |

| b     | varchar(10) | YES  |     | NULL    |       |

+-------+-------------+------+-----+---------+-------+

3 rows in set

ALTER TABLE... SHRINK SPACE

功能说明

释放被删除的数据文件所占的磁盘空间。

l alter table t shrink space full;

FULL:行级回收,按行级原始顺序对DC内有效数据进行整理,重新落盘写seg文件。只要有删除的数据,删除数据的空间就会被回收。有效行的顺序跟回收前保持一致,效率较低。

l alter table t shrink space full block_reuse_ratio=30;

FULL BLOCK_REUSE_RATIO:块级(DC)回收,DC中有效数据占比大于等于设置值时该DC保留重用,有效数据占比低于该设置值时DC空间进行整合,回收无效数据空间,DC整合后重新落盘写seg文件,无法保证原始顺序。

l alter table t shrink space;

原有语法:seg级回收。seg内所有数据都被删除,则该seg文件空间回收。

语法格式

ALTER TABLE [vc_name.][database_name.]table_name SHRINK SPACE [FULL] | [FULL BLOCK_REUSE_RATIO= num]

注意

l 索引文件及rowid占用的磁盘空间不会被回收。

l 磁盘空间回收命令仅针对表。

l 包含行存列的表不支持行级回收和块级回收。

l 如果删除数据命中所有数据,则有尾块数据的文件不被清理。

l 磁盘空间回收过程中需要一定的磁盘空间来备份部分元数据文件,在没有可用空间的情况下执行该命令会报错,这时需要手工清理一部分空间(一般需要1G空间)再执行该命令进行空间回收。

示例

Ø 示例1:释放被删除的数据文件占有的磁盘空间。

gbase> select count(*) from lineorder;

+----------+

| count(*) |

+----------+

|  6001215 |

+----------+

1 row in set (Elapsed: 00:00:00.41)

[root@rhel73-1 lineorder_n1]# pwd

/opt/gnode/userdata/gbase/ssbm/sys_tablespace/lineorder_n1

[root@rhel73-1 lineorder_n1]# ll -h

总用量 69M

-rw------- 1 gbase gbase 1.6M 9月  28 11:32 C00000.seg.1

-rw------- 1 gbase gbase 734K 9月  28 11:32 C00001.seg.1

-rw------- 1 gbase gbase 1.6M 9月  28 11:32 C00002.seg.1

-rw------- 1 gbase gbase 5.8M 9月  28 11:32 C00003.seg.1

-rw------- 1 gbase gbase 2.9M 9月  28 11:32 C00004.seg.1

-rw------- 1 gbase gbase  24K 9月  28 11:32 C00005.seg.1

-rw------- 1 gbase gbase 2.8M 9月  28 11:32 C00006.seg.1

-rw------- 1 gbase gbase  31K 9月  28 11:32 C00007.seg.1

-rw------- 1 gbase gbase 1.5M 9月  28 11:32 C00008.seg.1

-rw------- 1 gbase gbase 5.8M 9月  28 11:32 C00009.seg.1

-rw------- 1 gbase gbase 2.4M 9月  28 11:32 C00010.seg.1

-rw------- 1 gbase gbase 1.2M 9月  28 11:32 C00011.seg.1

-rw------- 1 gbase gbase 5.8M 9月  28 11:32 C00012.seg.1

-rw------- 1 gbase gbase 5.3M 9月  28 11:32 C00013.seg.1

-rw------- 1 gbase gbase 1.1M 9月  28 11:32 C00014.seg.1

-rw------- 1 gbase gbase 2.2M 9月  28 11:32 C00015.seg.1

-rw------- 1 gbase gbase 6.0M 9月  28 11:32 C00016.seg.1

gbase> delete from lineorder where lo_orderkey<=5000000;

Query OK, 5001154 rows affected (Elapsed: 00:00:02.10)

gbase> select count(*) from lineorder;

+----------+

| count(*) |

+----------+

|  1000061 |

+----------+

1 row in set (Elapsed: 00:00:00.00

gbase> alter table lineorder shrink space full;

Query OK, 0 rows affected (Elapsed: 00:00:06.53)

[root@rhel73-1 lineorder_n1]# ll -h

总用量 12M

-rw------- 1 gbase gbase  274K 9月  28 11:35 C00000.seg.1.B

-rw------- 1 gbase gbase  123K 9月  28 11:35 C00001.seg.1.B

-rw------- 1 gbase gbase  268K 9月  28 11:35 C00002.seg.1.B

-rw------- 1 gbase gbase  978K 9月  28 11:35 C00003.seg.1.B

-rw------- 1 gbase gbase  489K 9月  28 11:35 C00004.seg.1.B

-rw------- 1 gbase gbase  4.0K 9月  28 11:35 C00005.seg.1.B

-rw------- 1 gbase gbase  479K 9月  28 11:35 C00006.seg.1.B

-rw------- 1 gbase gbase  5.2K 9月  28 11:35 C00007.seg.1.B

-rw------- 1 gbase gbase  245K 9月  28 11:35 C00008.seg.1.B

-rw------- 1 gbase gbase  978K 9月  28 11:35 C00009.seg.1.B

-rw------- 1 gbase gbase  394K 9月  28 11:35 C00010.seg.1.B

-rw------- 1 gbase gbase  199K 9月  28 11:35 C00011.seg.1.B

-rw------- 1 gbase gbase  978K 9月  28 11:35 C00012.seg.1.B

-rw------- 1 gbase gbase  891K 9月  28 11:35 C00013.seg.1.B

-rw------- 1 gbase gbase  186K 9月  28 11:35 C00014.seg.1.B

-rw------- 1 gbase gbase  320K 9月  28 11:35 C00015.seg.1.B

-rw------- 1 gbase gbase 1021K 9月  28 11:35 C00016.seg.1.B

ALTER TABLE…ADD PARTITION

语法格式

ALTER TABLE [vc_name.][database_names.]table_name

    alter_specification [, alter_specification] ...

alter_specification:

ADD PARTITION partition_definition

 

说明

l 分区表的分区条件为RANGE或LIST;

l 对于RANGE分区表,新增的分区的VALUE范围相对表中现有分区的VALUE范围必须是递增的;

l 对于LIST分区表,新增分区不能包含在现有分区值列表中的任意值;

l 分区表不允许添加子分区。

 

示例

gbase> create table pt (i int ,c varchar(10),d date)

    -> partition by range(i) (

    -> partition p0 values less than(10),

    -> partition p1 values less than(20));

Query OK, 0 rows affected (Elapsed: 00:00:00.13)

gbase> -- 增加分区

gbase> alter table pt add partition (partition p2 values less than(30));

Query OK, 0 rows affected (Elapsed: 00:00:00.12)

Records: 0  Duplicates: 0  Warnings: 0

gbase> alter table pt add partition (partition p3 values less than(maxvalue));

Query OK, 0 rows affected (Elapsed: 00:00:00.13)

Records: 0  Duplicates: 0  Warnings: 0

注意

l 添加分区时,分区条件不满足规则,报错;

l 添加分区时,分区名字重复,报错;

l 添加分区时,分区个数大于8192,报错;

l 添加分区时,分区名字不符合命名规范,报错;

l 添加分区时,若分区为非RANGE或LIST分区,报错。

ALTER TABLE…DROP PARTITION

Ø 语法格式

ALTER TABLE [vc_name.][database_names.]tbl_name

    alter_specification [, alter_specification] ...

alter_specification:

    DROP PARTITION partition_names

说明

l 分区表的分区条件为RANGE或LIST;

l 不能删除全部分区,确保至少存在1个分区;

l 不能删除子分区。

 

Ø 示例

gbase> show create table pt\G

*************************** 1. row ***************************

       Table: pt

Create Table: CREATE TABLE "pt" (

  "i" int(11) DEFAULT NULL,

  "c" varchar(10) DEFAULT NULL,

  "d" date DEFAULT NULL

) ENGINE=EXPRESS DEFAULT CHARSET=utf8 TABLESPACE='sys_tablespace'

 PARTITION BY RANGE (i)

(PARTITION p0 VALUES LESS THAN (10) TABLESPACE = 'sys_tablespace' ENGINE = EXPRESS,

 PARTITION p1 VALUES LESS THAN (20) TABLESPACE = 'sys_tablespace' ENGINE = EXPRESS,

 PARTITION p2 VALUES LESS THAN (30) TABLESPACE = 'sys_tablespace' ENGINE = EXPRESS,

 PARTITION p3 VALUES LESS THAN MAXVALUE TABLESPACE = 'sys_tablespace' ENGINE = EXPRESS)

1 row in set (Elapsed: 00:00:00.00)

gbase> alter table pt drop partition p3;

Query OK, 0 rows affected (Elapsed: 00:00:00.11)

Records: 0  Duplicates: 0  Warnings: 0

gbase> alter table pt drop partition p1;

Query OK, 0 rows affected (Elapsed: 00:00:00.12)

Records: 0  Duplicates: 0  Warnings: 0

gbase> show create table pt\G

*************************** 1. row ***************************

       Table: pt

Create Table: CREATE TABLE "pt" (

  "i" int(11) DEFAULT NULL,

  "c" varchar(10) DEFAULT NULL,

  "d" date DEFAULT NULL

) ENGINE=EXPRESS DEFAULT CHARSET=utf8 TABLESPACE='sys_tablespace'

 PARTITION BY RANGE (i)

(PARTITION p0 VALUES LESS THAN (10) TABLESPACE = 'sys_tablespace' ENGINE = EXPRESS,

 PARTITION p2 VALUES LESS THAN (30) TABLESPACE = 'sys_tablespace' ENGINE = EXPRESS)

1 row in set (Elapsed: 00:00:00.01)

注意

l 删除分区表分区时,若只有1个分区时,报错;

l 删除分区表分区时,若同时删除所有分区,报错;

l 删除分区表分区时,若是非RANGE或LIST分区,报错。

DROP DISTRIBUTED COLUMN

功能说明

删除表定义中的哈希列定义,使得表变为随机分布表。

语法格式

DROP DISTRIBUTED COLUMN ON  [vc_name.][database_names.]table_name;

 74 参数说明

参数名称

说  明

vc_name

所属的vc名称。

database_name

所属数据库名。

table_name

表名

示例

gbase> DROP DISTRIBUTED COLUMN ON x0;

Query OK, 0 rows affected (Elapsed: 00:00:00.04)

RENAME TABLE

Ø 功能

RENAME TABLE 的功能就是将一张已经存在的表的名称修改为一个新的表名称。

语法格式

RENAME TABLE [vc_name.][database_name.]old_table_name TO [vc_name.][database_name.]new_table_name;

 75 参数说明

参数名称

说  明

vc_name

要修改表隶属的vc名称,可选项;省略此参数,即为执行该sql的默认vc。

database_name

是要修改表隶属的数据库名称,可选项;省略此参数,即为USE database_name后的数据库名称。

old_table_name

是表的原有名称。 

new_table_name

是表的要修改后的新名称。

示例

示例1:更改表n的名称为m

gbase> SELECT table_schema,table_name,table_rows FROM information_schema.tables WHERE table_vc='vcname000001' AND table_schema='test' AND table_name = 'n';

+--------------+------------+------------+

| table_schema | table_name | table_rows |

+--------------+------------+------------+

| test         | n          |          0 |

+--------------+------------+------------+

1 row in set (Elapsed: 00:00:00.00)

 

gbase> RENAME TABLE vcname000001.test.n to vcname000001.test.m;

Query OK, 0 rows affected (Elapsed: 00:00:00.07)

 

gbase> SELECT table_schema,table_name,table_rows FROM information_schema.tables WHERE table_vc='vcname000001' AND table_schema='test' AND table_name = 'n';

Empty set (Elapsed: 00:00:00.00)

 

gbase> SELECT table_schema,table_name,table_rows FROM information_schema.tables WHERE table_vc='vcname000001' AND table_schema='test' AND table_name = 'm';

+--------------+------------+------------+

| table_schema | table_name | table_rows |

+--------------+------------+------------+

| test         | m          |          0 |

+--------------+------------+------------+

1 row in set (Elapsed: 00:00:00.00)

TRUNCATE TABLE

功能说明

TRUNCATE TABLE在功能上与不带WHERE子句的DELETE语句相同,二者均删除表中的全部行。但TRUNCATE TABLE比DELETE速度快,且使用的系统资源和事务日志资源少。

TRUNCATE TABLE属于DDL语法,DELETE FROM table_name属于DML语法。

TRUNCATE TABLE删除表中的所有行,但表结构及其列、约束、索引等保持不变。

语法格式

TRUNCATE TABLE [vc_name.][database_name.]table_name

 76 参数说明

参数名称

说  明

vc_name

虚拟集群名称,可选项;

database_name

是要删除表隶属的数据库名称,可选项;省略此参数,即为USE database_name后的数据库名称。

table_name

是要删除其全部行的表的名称。

示例

示例1:删除表t中的所有数据。

gbase> USE test;

Query OK, 0 rows affected

gbase> CREATE TABLE t (a decimal(12,5) DEFAULT NULL, KEY idx_a (a) USING HASH LOCAL);

Query OK, 0 rows affected

gbase> INSERT INTO t VALUES(1),(2),(3);

Query OK, 3 rows affected

Records: 3  Duplicates: 0  Warnings: 0

gbase> SELECT * FROM dual;

+---------+

| a       |

+---------+

| 1.00000 |

| 2.00000 |

| 3.00000 |

+---------+

3 rows in set

gbase> TRUNCATE TABLE t;

Query OK, 3 rows affected

gbase> SELECT * FROM dual;

Empty set

DROP TABLE

Ø 语法格式

DROP [TEMPORARY] TABLE [IF EXISTS] [vc_name.][database_name.]table_name;

 77 参数说明

参数名称

说  明

TEMPORARY

该参数为可选参数,删除临时表时建议使用此关键字。

IF EXISTS

用户可以使用关键词IF EXISTS防止表不存在时报告错误。当使用IF EXISTS时,对于不存在的表,用户将得到一个WARNING。

vc_name

虚拟集群名称,可选项;

database_name

是要删除表隶属的数据库名称,可选项;省略此参数,即为USE database_name后的数据库名称。

table_name

是要删除其全部行的表的名称。

注意

使用DROP TABLE移除一个表时,将删除所有的数据和表定义,用户必须有表的DROP权限,所以,一定要小心地使用这个命令!

TABLE SPACE

GBase 8a MPP Cluster一个表空间表示一个数据存储路径。表空间的创建规则是每个库可以存在多个表空间,只有一个默认表空间,一个表空间可以多个表使用,但一个表只能属于一个表空间。

默认情况下,每个库都有一个默认表空间sys_tablespace,sys_tablespace指向现在的固定数据存储路径($GBASE_BASE/config/gbase_8a_gbase.cnf中datadir指定的目录下数据库名目录下sys_tablespace目录中),不可以删除。

1.1.1.1.3.1 建库时指定默认表空间

语法格式

CREATE DATABASE [vc_name.]<database_name> SYSTEM TABLESPACE DATADIR  <path> [SEGSIZE <segsize_value>] [MAXSIZE <max size_value>];

 78 参数说明

参数名称

说  明

vc_name

虚拟集群名称,可选项。

database_name

数据库名称,可选项。

path

默认Tablespace所对应的系统路径,路径支持相对路径和绝对路径,相对路径是相对于配置文件中配置的datadir路径。

segsize_value

表空间中表的seg文件分裂大小,在10M到2G之间,使用带有K,M,G单位表示,默认为2G。

maxsize_value

指定表空间最大限额,它要大于segsize值,使用带有K,M,G单位表示。由用户保证磁盘可用空间大于maxsize_value。默认为不限制。该参数在集群层指定则表示每个节点的表空间最大限额。资源管理先于表空间进行空间的限额检验。

CREATE TABLESPACE

语法格式

CREATE TABLESPACE [IF NOT EXISTS] [[vc_name.]database_name.]<tablespace_name> DATADIR <path> [SEGSIZE <segsize_value>] [MAXSIZE  <maxsize_value>]

 79 参数说明

参数名称

说  明

vc_name

虚拟集群名称,可选项。

database_name

数据库名称,可选项。

tablespace_name

表空间名称,支持数字英文和下划线,长度为64个字符,不区分大小写,全部按照小写字符创建,且不允许以数字开头。(该规则适用于全文,类似内容不再冗述);

path

Tablespace所对应的实际系统路径,路径支持相对路径和绝对路径,相对路径是相对于配置文件中配置的datadir路径;

segsize_value

Tablespace中表的seg文件分裂大小,在10M到2G之间,使用带有K、M、G单位表示,默认为2G;

maxsize_value

指定表空间最大限额,它要大于segsize值,使用带有K,M,G单位表示。由用户保证磁盘可用空间大于maxsize_value。默认为不限制。该参数在集群层指定则表示每个节点的表空间最大限额。资源管理先于表空间进行空间的限额检验。

DROP TABLESPACE

语法格式

DROP TABLESPACE [[vc_name.]database_name.]<tablespace_name>;

 710 参数说明

参数名称

说  明

vc_name

虚拟集群名称,可选项。

database_name

数据库名称,可选项。

tablespace_name

表空间名称。

注意

删除表空间有如下限制:

l l默认表空间不允许删除;

l l系统表空间sys_tablespace不允许删除;

l l正在使用的表空间不允许删除。

ALTER TABLESPACE

功能说明

修改TABLESPACE 最大限额。

语法格式

ALTER TABLESPACE [[vc_name.]database_name.]tablespace_name  MAXSIZE  <maxsize_value>;

 711 参数说明

参数名称

说  明

vc_name

虚拟集群名称,可选项。

database_name

数据库名称,可选项。

tablespace_name

表空间名称。

maxsize_value

指定表空间最大限额,它要大于segsize值,使用带有K、M、G单位表示。由用户保证磁盘可用空间大于maxsize_value。默认为不限制。只支持增大修改,不允许减少。资源管理先于表空间进行空间的限额检验。

建表时指定表空间

功能说明

创建表时可以指定要使用的TABLESPACE,不做指定则使用库的默认表空间。分区表作为一个表来看待,只能指定一个tablespace,不支持为不同分区指定不同tablespace。

语法格式

CREATE TABLE [[vc_name.]database_name.]table_name (column_def...) TABLESPASCE=tablespace_name;

 712 参数说明

参数名称

说  明

vc_name

虚拟集群名称,可选项。

database_name

数据库名称,可选项。

table_name

表名称。

tablespace_name

表空间名称。

说明

l CREATE TABLE …LIKE…不支持指定表空间;

l CREATE TABLE …AS SELECT…支持指定表空间。

设置库的默认表空间

功能说明

用户可以修改指定库的默认Tablespace,设置数据库的默认Tablespace后,创建表不指定Tablespace时,使用默认Tablespace。该功能不支持针对系统库操作,包括gbase、gctmpdb、performance_schema和information_schema等。

语法格式

USE [[vc_name.]database_name.]tablespace_name AS DEFAULT TABLESPACE;

 713 参数说明

参数名称

说  明

vc_name

虚拟集群名称,可选项。

database_name

数据库名称,可选项。

tablespace_name

表空间名称。

说明

Ø 使用use前必须保证要设置的tablespace已经创建好。

SHOW TABLESPACES

功能说明

查询表空间信息。

语法格式

SHOW  [full]  TABLESPACES;

 714 参数说明

参数名称

说  明

full

显示是否是默认表空间。

 

示例

gbase> SHOW FULL TABLESPACES;

+------------------------+------------------------+------------+

| Tablespace_in_test_sdy | Tablespace_in_test_sdy | Is_default |

+------------------------+------------------------+------------+

| sys_tablespace         | .                      | no         |

| tbs1                   | ../tbs1                | yes        |

+------------------------+------------------------+------------+

2 rows in set (Elapsed: 00:00:00.00)

REFRESH TABLESPACE

功能说明

刷新表空间使用大小信息。

语法格式

REFRESH TABLESPACE [[vc_name.]database_name.] tablespace_nameSTORAGE USAGE

 715 参数说明

参数名称

说  明

vc_name

虚拟集群名称,可选项。

database_name

数据库名称,可选项。

tablespace_name

表空间名称。

注意

l 不支持gctmpdb库、gclusterdb库下,除SHOW TABLESPACES之外的其他TABLESPACE相关操作;

l 在建立镜像关系之前,用户需要预先手动在相关节点创建指定的目录和对应的TABLESPACE,且需要用户保证其一致性,镜像关系建立后,支持创建TABLESPACE指令的镜像下发功能;

l 卸载时,用户自定义表空间的相关目录中的数据会被删除;

l 关于备份恢复工具,其分为三个等级:实例级、库级和表级。其中,实例级和库级的恢复过程,用户不需要手动建立TABLESPACE和对应的目录,这些工作均由程序完成;表级的恢复过程,需要用户预先手动在指定库中建立好与备份时相同的TABLESPACE;

l 关于扩容功能,用户需要预先手动在扩容的新节点上将TABLESPACE所需要的目录建立起来,新节点上的创建TABLESPACE的动作由程序自行完成;

l 关于分区表,按照一个表来对待,用户只能指定一个TABLESPACE,不支持不同分区指定不同TABLESPACE;

l 对于节点替换功能,用户需要在被替换节点上预先手动建立好TABLESPACE的路径。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值