麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數據庫 > Oracle > 正文

Oracle外鍵不加索引引起死鎖示例

2024-08-29 13:58:03
字體:
來源:轉載
供稿:網友
--創建一個表,此表作為子表

create table fk_t as select *from user_objects;

delete from fk_t where object_id is null;

commit;

--創建一個表,此表作為父表

create table pk_t as select *from user_objects;

delete from pk_t where object_id is null;

commit;

--創建父表的主鍵

alter table PK_t add constraintpk_pktable primary key (OBJECT_ID);

--創建子表的外鍵

alter table FK_t addconstraint fk_fktable foreign key (OBJECT_ID) references pk_t (OBJECT_ID);

--session1:執行一個刪除操作,這時候在子表和父表上都加了一個Row-S(SX)鎖

delete from fk_t whereobject_id=100;

delete from pk_t where object_id=100;

--session2:執行另一個刪除操作,發現這時候第二個刪除語句等待

delete from fk_t whereobject_id=200;

delete from pk_t whereobject_id=200;

--回到session1:死鎖馬上發生

delete from pk_t whereobject_id=100;

session2中報錯:

SQL> delete from pk_table where object_id=200;
delete from pk_table where object_id=200
*
第 1 行出現錯誤:

ORA-00060: 等待資源時檢測到死鎖

當對子表的外鍵列添加索引后,死鎖被消除,因為這時刪除父表記錄不需要對子表加表級鎖。

--為外鍵建立索引

create index ind_pk_object_id on fk_t(object_id) nologging;

--重復上面的操作session1

delete from fk_t whereobject_id=100;

delete from pk_t whereobject_id=100;

--session2

delete from fk_t whereobject_id=200;

delete from pk_t whereobject_id=200;

--回到session1不會發生死鎖

delete from pk_t whereobject_id=100;
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久久99精品久久久久久236 | 久久亚洲视频网 | 国产亚洲精品久久久久久网站 | 久久亚洲春色中文字幕久久 | 一本视频在线观看 | 美女被免费网站在线软件 | 国产精品视频导航 | 视频一区二区三区在线播放 | 免费国产自久久久久三四区久久 | 久草网在线 | 法国性hdfreexxxx人妖 | 黄色免费高清网站 | 久久久久免费电影 | 亚洲欧洲av在线 | 最新亚洲视频 | 国产69精品久久99不卡免费版 | 国产九色在线播放九色 | 午夜国产成人 | 一本到免费视频 | 欧美一级黄色免费 | 欧美成人精品一区二区三区 | 国产精品久久999 | 欧美日韩国产中文字幕 | 看毛片电影 | 欧美一级全黄 | 91精品国产91久久久 | 91久久久久久亚洲精品禁果 | 欧美日韩国产一区二区三区在线观看 | 欧美精品免费一区二区三区 | 黄色a级片视频 | 999精品国产 | 精品国产一区二区三区在线观看 | 成人在线视频播放 | 蜜桃传免费看片www 一本色道精品久久一区二区三区 | 欧美亚州 | 色网免费观看 | 欧美视频一二区 | 久久国产一级片 | 综合在线一区 | 色婷婷tv | 欧美1区2区在线观看 |