gbase如何增加多个字段

gbase如何增加多个字段,第1张

gbase如何增加多个字段

GBase 8a数据库集群,目前不支持字段的定义修改,除了varchar类型可以增加长度,其它的类型或属性均不可以,需要重建一个字段过渡一下。

varchar类型增加长度

请一定保留原有的附加属性,包括not null, default 等。否则change时会报错。单独修改注释等,请用modify功能。

gbase>desc t2

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

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

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

| id| int(11) | YES | | NULL| |

| name | varchar(20) | YES | | NULL| |

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

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

gbase>alter table t2 change name name varchar(30)

Query OK, 0 rows affected, 1 warning (Elapsed: 00:00:00.98)

Records: 0 Duplicates: 0 Warnings: 0

gbase>desc t2

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

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

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

| id| int(11) | YES | | NULL| |

| name | varchar(30) | YES | | NULL| |

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

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

gbase>

其它类型变动

其它类型只有先建一个新的字段,然后把数据update过去,然后把老的删除,把新的change成老的字段名。

如下例子,把value bigint, 改成 value int.

gbase>desc t1

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

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

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

| id| int(11)| YES | MUL | NULL| |

| value | bigint(20) | YES | | NULL| |

| birth | datetime | YES | | NULL| |

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

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

gbase>alter table t1 add column value2 int after value

Query OK, 4 rows affected (Elapsed: 00:00:00.65)

Records: 4 Duplicates: 4 Warnings: 0

gbase>desc t1

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

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

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

| id | int(11)| YES | MUL | NULL| |

| value | bigint(20) | YES | | NULL| |

| value2 | int(11)| YES | | NULL| |

| birth | datetime | YES | | NULL| |

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

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

gbase>update t1 set value2=value

Query OK, 4 rows affected (Elapsed: 00:00:00.28)

Rows matched: 4 Changed: 4 Warnings: 0

gbase>alter table t1 drop value

Query OK, 4 rows affected (Elapsed: 00:00:00.42)

Records: 4 Duplicates: 4 Warnings: 0

gbase>desc t1

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

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

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

| id | int(11) | YES | MUL | NULL| |

| value2 | int(11) | YES | | NULL| |

| birth | datetime | YES | | NULL| |

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

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

gbase>alter table t1 change value2 value int

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

Records: 0 Duplicates: 0 Warnings: 0

gbase>desc t1

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

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

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

| id| int(11) | YES | MUL | NULL| |

| value | int(11) | YES | | NULL| |

| birth | datetime | YES | | NULL| |

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

3 rows in set (Elapsed: 00:00:00.01)

本文的功能经常用到,虽然系统可以修改字段类型,但还是建议在设计阶段控制好,特别是避免从高精度,高长度更改为低精度,低长度的情况。 特别是varchar并不是实际占用空间。

支持分别修改列默认值和数据类型。要为某列设置一个新默认值,可以使用命令:

ALTER TABLE table_name ALTER COLUMN column_name SET DEFAULT new_default

修改数据类型,使用命令:

ALTER TABLE table_name ALTER COLUMN column_name TYPE new_type

注意:这不会影响任何表中已经存在的行。

1. 通过sysbench初始化1张2000万行的表

2. 通过sysbench执行OLTP场景(read write)对数据库加压,采集间隔为1秒;

3. 对sysbench的sbtest1表在线添加新列,观察是否执行成功,以及对tps,qps影响,记录执行alter语句时间:

dbaccess test -

>alter table sbtest1 add (new_column int)

4. 对sysbench的sbtest1表在线删除新列,观察是否执行成功,以及对tps,qps影响,记录执行alter语句时间:

dbaccess test -

>alter table sbtest1 drop new_column


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11921782.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-19
下一篇2023-05-19

发表评论

登录后才能评论

评论列表(0条)

    保存