国产一级一区二区_segui88久久综合9999_97久久夜色精品国产_欧美色网一区二区

掃一掃
關注微信公眾號

如何防止插入刪除表造成的數(shù)據(jù)庫死鎖
2010-03-05   網(wǎng)絡

在數(shù)據(jù)庫中經(jīng)常會遇到這樣的 情況:一個主表A,一個子表B,B表中包含有A表的主鍵作為外鍵。當要插入數(shù)據(jù)的時候,我們會先插入A表,然后獲得A表的Identity,再插入B表。 如果要進行刪除操作,那么就先刪除子表B,然后再刪除主表A。在程序設計中,對兩個表的操作是在一個事務之中完成的。

  當系統(tǒng)使用頻繁就會出現(xiàn)插入操作和刪除操作同時進行的情況。這個時候插入事務會先將主表A放置獨占鎖,然后去訪問子表B,而同時刪除事務會對子 表B放置獨占鎖,然后去訪問主表A。插入事務會一直獨占著A表,等待訪問B表,刪除事務也一直獨占著B表等待訪問A表,于是兩個事務相互獨占一個表,等待 對方釋放資源,這樣就造成了死鎖。

  遇到這種情況我聽說了三種做法:

  1 取消AB兩個表之間的外鍵關系,這樣就可以在刪除數(shù)據(jù)的時候就可以先刪除主表A,然后刪除子表B,讓對這兩個表操作的事務訪問順序一致。

  2 刪除A表數(shù)據(jù)之前,先使用一個事務將B表中相關外鍵指向另外A表中的另外一個數(shù)據(jù)(比如在A表中專門建一行數(shù)據(jù),主鍵設置為0,永遠不會對這行數(shù)據(jù)執(zhí)行刪 除操作),這樣就消除了要被刪除的數(shù)據(jù)在AB兩個表中的關系。然后就可以使用刪除事務,先刪除A表中的數(shù)據(jù),再刪除B表中的數(shù)據(jù),以達到和插入事務表訪問 一致,避免死鎖。

  3 在外鍵關系中,將“刪除規(guī)則”設置為“層疊”,這樣刪除事務只需要直接去刪除主表A,而不需要對子表B進行操作。因為刪除規(guī)則設置為層疊以后,刪除主表中 的數(shù)據(jù),子表中所有外鍵關聯(lián)的數(shù)據(jù)也同時刪除了。

熱詞搜索:

上一篇:如何建立綠色的磁盤到磁盤(D2D)備份
下一篇:部署iSCSI SAN中小企業(yè)6大注意事項

分享到: 收藏
主站蜘蛛池模板: 通江县| 云阳县| 沭阳县| 吉首市| 扶绥县| 微山县| 沅江市| 乡宁县| 抚州市| 思南县| 扶沟县| 兴义市| 会昌县| 安仁县| 奈曼旗| 浪卡子县| 鄂尔多斯市| 西贡区| 山阳县| 咸宁市| 霍城县| 祁阳县| 同江市| 长顺县| 西盟| 宁安市| 长兴县| 丹江口市| 琼结县| 宁南县| 南漳县| 承德县| 区。| 深水埗区| 兴化市| 南丰县| 九龙城区| 名山县| 常宁市| 怀安县| 铜鼓县|