网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

无索引的外键之主表子表DML操作实验及结论

子表上的insert 操作执行后不提交,会阻塞后续主表上的update、delete、insert操作(针对包含主键列的的操作),主表、

在浠水等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都做网站、成都网站设计 网站设计制作按需网站制作,公司网站建设,企业网站建设,品牌网站建设,成都全网营销,外贸网站建设,浠水网站建设费用合理。

子表都是TM锁,外键加索引后消除阻塞问题。   

create table test_pk1 (id number,pcol varchar2(1)) tablespace users;

alter table test_pk1 add constraint pk_test_pk1_id primary key(id) using index tablespace users;

insert into test_pk1 values(1,'A');

insert into test_pk1 values(2,'B');

insert into test_pk1 values(3,'C');

insert into test_pk1 values(4,'D');

insert into test_pk1 values(5,'E');

commit;

create table test_fk1 (id number,fcol varchar2(1)) tablespace users;

alter table test_fk1 add constraint fk_test_fk1_id foreign key(id) references test_pk1(id);

insert into test_fk1 values(1,'a');

insert into test_fk1 values(2,'a');

commit;

场景一:子表执行insert操作后不提交,另一个事务对主表进行update、delete、insert

--子表

insert into test_fk1 values(5,'d');

--主表

update test_pk1 set id=55 where id='4';

delete test_pk1 where id='3';

insert into test_pk1 values(6,'F');

结论:子表上的insert 操作执行后不提交,会阻塞后续主表上的update、delete、insert操作(针对包含主键列的的操作),

主表、子表都是TM锁。

--给外键加索引后,然后进行主表的update、delete、insert操作看是否会有影响

create index idx_id on test_fk1(id);

结论:外键加索引后消除阻塞问题。  

场景二:子表执行update操作后不提交,另一个事务对主表进行update、delete、insert 

--子表

update test_fk1 set fcol='b' where id='2';

--主表

update test_pk1 set id=55 where id='4';

delete test_pk1 where id='3';

insert into test_pk1 values(6,'F');

结论:子表上的update操作执行后不提交,对主表上的update、delete、insert操作无影响。

场景三:子表执行delete操作后不提交,另一个事务对主表进行update、delete、insert 

--子表

delete test_fk1 where id='2';

--主表

update test_pk1 set id=55 where id='4';

delete test_pk1 where id='3';

insert into test_pk1 values(6,'F');

结论:子表上的delete操作执行后不提交,对主表上的update、delete、insert操作无影响。

场景四:主执行delete操作后不提交,另一个事务对子表进行update、delete、insert 

--主表

delete test_pk1 where id='3';

--子表

update test_fk1 set fcol='A' where id='1';

insert into test_fk1 values(4,'d');

delete test_fk1 where id='2';

结论:主表上的delete操作执行后不提交,对子表上的update、delete、insert操作无影响。

场景五:主执行update操作后不提交,另一个事务对子表进行update、delete、insert 

--主表

update test_pk1 set pcol='F' where id='5';

--子表

update test_fk1 set fcol='A' where id='1';

insert into test_fk1 values(4,'d');

delete test_fk1 where id='2';

结论:主表上的update操作执行后不提交,对子表上的update、delete、insert操作无影响。

场景五:主执行insert操作后不提交,另一个事务对子表进行update、delete、insert 

--主表

insert into test_pk1 values(6,'F');

--子表

update test_fk1 set fcol='A' where id='1';

insert into test_fk1 values(4,'d');

delete test_fk1 where id='2';

结论:主表上的delete操作执行后不提交,对子表上的update、delete、insert操作无影响。


本文名称:无索引的外键之主表子表DML操作实验及结论
地址分享:http://bjjierui.cn/article/gsodsj.html

其他资讯