怎么写mysql数据库延迟级联删除命令

怎么写mysql数据库延迟级联删除命令,第1张

使用 bcc 工具观测 MySQL:1)dbstat功能:将 MySQL/PostgreSQL 的查询延迟汇总为直方图

语法:

dbstat [-h] [-v] [-p [PID [PID ]]] [-m THRESHOLD] [-u] [-i INTERVAL]              {mysql,postgres}

选项:

{mysql,postgres}                           # 观测哪种数据库-h, --help                                 # 显示帮助然后退出-v, --verbose                              # 显示BPF程序-p [PID [PID ]], --pid [PID [PID ]]  # 要观测的进程号,空格分隔-m THRESHOLD, --threshold THRESHOLD        # 只统计查询延迟比此阈值高的-u, --microseconds                         # 以微秒为时间单位来显示延迟(默认单位:毫秒)-i INTERVAL, --interval INTERVAL           # 打印摘要的时间间隔(单位:秒)

示例:

# 使用 sysbench 在被观测数据库上执行 select[root@liuan tools]# dbstat mysql -p `pidof mysqld` -uTracing database queries for pids 3350 slower than 0 ms^C[14:42:26]     query latency (us)

2)dbslower

功能:跟踪 MySQL/PostgreSQL 的查询时间高于阈值

语法:

dbslower [-h] [-v] [-p [PID [PID ]]] [-x PATH] [-m THRESHOLD]                 {mysql,postgres}

参数:

{mysql,postgres}                           # 观测哪种数据库 -h, --help                                 # 显示帮助然后退出 -v, --verbose                              # 显示BPF程序 -p [PID [PID ]], --pid [PID [PID ]]  # 要观测的进程号,空格分隔 -m THRESHOLD, --threshold THRESHOLD        # 只统计查询延迟比此阈值高的 -x PATH, --exe PATH                        # 数据库二进制文件的位置

示例:

# 使用sysbench在被观测数据库上执行update_index [root@liuan tools]# dbslower mysql -p `pidof mysqld` -m 2 Tracing database queries for pids 3350 slower than 2 ms TIME(s)        PID          MS QUERY 1765087       3350      2996 UPDATE sbtest1 SET k=k+1 WHERE id=963 3187147       3350      2069 UPDATE sbtest1 SET k=k+1 WHERE id=628 5945987       3350      2171 UPDATE sbtest1 SET k=k+1 WHERE id=325 7771761       3350      3853 UPDATE sbtest1 SET k=k+1 WHERE id=5955 使用限制

bcc 基于 eBPF 开发(需要 Linux 315 及更高版本)。bcc 使用的大部分内容都需要 Linux 41 及更高版本。

"bccusdtUSDTException: failed to enable probe 'query__start'; a possible cause can be that the probe requires a pid to enable" 需要 MySQL 具备 Dtrace tracepoint。

建表的时候用主外键约束指明级联删除:

foreign key (外键) references a(主键) on delete cascade

还有就是建立触发器

create or replace trigger trigger_name

before delete on 触发表

for each row

begin

delete from *** 作表 where *** 作表字段= :old对应触发表字段;

end;

/

sql级联更新和级联删除不起作用

级联删除你可以把它认为是一个触发器,也就是你删除主表中的数据,那么从表中的相关联的也就一起删除了。。。看个例子:======================create table a

(

id varchar(20) primary key,

password varchar(20) not null

)

create table b

(

id int identity(1,1) primary key,

name varchar(50) not null,

userId varchar(20),

foreign key (userId) references a(id) on delete cascade

)

表B创建了外码userId 对应A的主码ID,声明了级联删除

测试数据:

insert a values ('11','aaa')

insert a values('23','aaa')

insert b values('da','11')

insert b values('das','11')

insert b values('ww','23')

删除A表内id为‘11’的数据,发现B表内userId 为“11”也被数据库自动删除了,这就是级联删除

级联删除你可以把它认为是一个触发器,也就是你删除主表中的数据,那么从表中的相关联的也就一起删除了。。。看个例子:======================create table a

(

id varchar(20) primary key,

password varchar(20) not null

)

create table b

(

id int identity(1,1) primary key,

name varchar(50) not null,

userId varchar(20),

foreign key (userId) references a(id) on delete cascade

)

表B创建了外码userId 对应A的主码ID,声明了级联删除

测试数据:

insert a values ('11','aaa')

insert a values('23','aaa')

insert b values('da','11')

insert b values('das','11')

insert b values('ww','23')

删除A表内id为‘11’的数据,发现B表内userId 为“11”也被数据库自动删除了,这就是级联删除

delete a where id='11'=============================================================级联更新也大同小异。。只是关键字为:on update希望回答对你有所帮助

方法一:

MSSQLSERVER

是支持

级联更新

级联删除

的,你要在建立

外键

的时候,要指定

EP:

alter

table

tb_userroles

add

constraint

FK_TB_USERR_RELATIONS_TB_FUNCT

foreign

key

(gnbm)

references

tb_function

(gnbm)

on

update

cascade

on

delete

cascade

方法二:用数据库触发器

------解决方案-------------------------------------------------------- --1、建立一个触发器(推荐)

create trigger on p for deleteas �0�2delete from spj where pno = (select pno from deleted)go--执行删除delete from p where pname='螺丝'

--2、级联删除

alter table p add constraint pk_p_id primary key (pno)go--为tb创建外健,并指定级联删除

alter table spj add constraint fk_spj_aid foreign key (pno) references p(pno) on delete cascadego------解决方案----------------------------------------------------------推荐触发器控制,可控性比较强

SQL code --1、建立一个触发器(推荐) create trigger on p for delete as delete from spj where pno = (select pno from deleted) go --执行删除 delete from p where pname='螺丝' --2、级联删除 alter table p add constraint pk_p_id primary key (pno) go --为tb创建外健,并指定级联删除 alter table spj add constraint fk_spj_aid foreign key (pno) references p(pno) on delete cascade go

------解决方案--------------------------------------------------------建立测试数据

SQL code if object_id('dboSPJ') is not null drop table dboSPJ; go if object_id('dboP') is not null drop table dboP; go create table dboP ( pno int not null primary key, pname nvarchar(20) not null ); go create table dboSPJ ( sno int not null primary key, pno int not null ); insert into dboP select 1, 'type-a' union all select 2, 'type-b' union all select 3, 'type-c'; go insert into dboSPJ select 1, 1 union all select 2, 1 union all select 3, 1 union all select 4, 2 union all select 5, 3 union all select 6, 3; go

------解决方案--------------------------------------------------------建议用外键约束

先删除子表在删除父表

------解决方案-------------------------------------------------------- �0�2个人建议用事务处理。

方法一:

MSSQLSERVER是支持级联更新和级联删除的,你要在建立外键的时候,要指定

EP:

alter

table

tb_userroles

add

constraint

FK_TB_USERR_RELATIONS_TB_FUNCT

foreign

key

(gnbm)

references

tb_function

(gnbm)

on

update

cascade

on

delete

cascade

方法二:用数据库触发器

以上就是关于怎么写mysql数据库延迟级联删除命令全部的内容,包括:怎么写mysql数据库延迟级联删除命令、数据库中怎样级联删除元组、sql级联更新和级联删除不起作用等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存