交易控制的重要性,begin tran記得要commit,否則會block一堆人

  • 5354
  • 0

交易控制的重要性,begin tran記得要commit,否則會block一堆人

在我們要對某一筆資料進行更新時,SQL會對該筆資料下一個X的Lock,

此時如有其他交易嘗試要取得該筆資料的Lock權限時,都必須等待該X的Lock解掉,

因此我故意模擬一筆記錄正在被某一個交易做更新,此時我們再開另一個Session

來做Select看看,整個流程如下圖:

 

10454256_798187596867382_9004431236468029286_o

 

如上圖所示,當我開啟Session57來更新一筆資料(故意沒有Commit),

此時可以看見Session57對該筆資料下了一個X的Lock。

因此當我再開一個Session58去Select該筆資料(Select要下S的Lock)時

,會發現須等待Session57釋放Lock後,Session58才能再對該筆資料

下S的Lock。

 

因此當您開啟交易異動資料請務必記得結束交易,否則別人可是要等到

天荒地老

我是ROCK

rockchang@mails.fju.edu.tw