先留个位置,然后我再整理下内容
首先一个问题就是,为什么要使用锁?或是说锁是用来干嘛的?
举个例子,我们用一个表来存储货物与货物数量,该货物入库的时候,对应的货物数量加1,该货物出库的时候,对应的货物数量减1,A、B、C、D可同时对该表操作,如果恰巧在同一时间,2个或两个以上的人对该货物的数量进行操作,那么就会导致数据修改错误。(其实这里举例的A、B、C、D数量还不够,需要成千上万的人同时操作,才有大的几率出现该并发问题。)
所以,锁机制的提出,是为了保证数据完整性和一致性,确保数据安全性。
并发操作下,或较容易出现:脏读、幻读、非重复性读取、更新丢失;
可锁定的资源:数据库、表、区段页、页、键、行
锁的类型:更新锁、排他锁、共享锁、键范围锁、架构锁
死锁的出现:在两个或多个任务中,如果每个任务锁定了其他任务试图锁定的资源,会造成这些任务永久阻塞,从而出现死锁。此时系统处于死锁状态。