GBase8s如何在有外键关系的表中删除数据?

GBase8s如何在有外键关系的表中删除数据?,第1张

有两种方式:

1、先删除外键表中的数据,再删除当前数据

举例:

drop table if exists t1

drop table if exists t2

create table t1(id int primary key , s1 float)

create table t2(id int , id1 int ,s1 float,foreign key(id1) references t1(id) )

insert into t1 values(1,20)

insert into t1 values(2,30)

insert into t2 values(1,1,50)

--如果你直接删除t1的数据,则报错

delete t1

692: Key value for constraint (root.u143_565) is still being referenced.

Error in line 1

Near character position 8

--需要先删除t2表中的数据,才能删除t1表中的数据

delete t2

delete t1

2、可以通过外键设置级联删除

--在设置外键时,设置级联删除

drop table t2

drop table t1

create table t1(id int primary key , s1 float)

create table t2(id int , id1 int ,s1 float,foreign key(id1) references t1(id) on delete cascade)

insert into t1 values(1,20)

insert into t1 values(2,30)

insert into t2 values(1,1,50)

--此时删除t1的数据,则删除t1及t2中数据

>delete t1

2 row(s) deleted.

>select * from t2

idid1s1

No rows found.

数据库运行过程中会产生大量运行日志,占用大量的磁盘空间,建议清理过期日志文件,只保留一个月的日志。具体步骤为:

1)以管理员用户gbase登录数据库主节点;

2)清理日志:将超过1个月的日志备份到其他磁盘-进入日志存放目录-进入相应的子目录,使用如下方式删除1个月之前产生的日志。

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


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

原文地址: http://outofmemory.cn/sjk/6422590.html

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

发表评论

登录后才能评论

评论列表(0条)

保存