Lock, Block, DeadLock

Lock, Block, DeadLock差異

Lock:一個交易。

  • 為資料在交易中的完整性,select要查最新資料,update是為防止其他concurrent的update,先鎖定。

Block:二個以上交易, 同時對一筆資料處理。

  • 先進先出,後到的需等前面的交易結束解鎖。
  • 若常發生Block會影響效能,需確認設計上是否有問題,可監看Block狀態。

Deadlock:二個以上交易, 同時都對相同的二個資料表做處理。

  • A交易鎖住A表後,等被B交易上鎖的B表解鎖,才能做後續處理,待A交易的B表作業完成後,才會回頭完成A表處理並解鎖。
  • 但不幸的是,同時間B交易也在等A交易解鎖A表。
  • 處理

參考資料:

https://blog.pythian.com/locks-blocks-deadlocks/