pull/1/head
ruyu.li 3 years ago
parent 92b71371ed
commit ab3bd980dd

@ -653,6 +653,14 @@ WHERE A.EMP_SUPV_ID = B.EMP_ID;
**数据库中的锁**
- **共享锁Share locks简记为S锁**:也称**读锁**事务A对对象T加s锁其他事务也只能对T加S多个事务可以同时读但不能有写操作直到A释放S锁。
- **排它锁Exclusivelocks简记为X锁**:也称**写锁**事务A对对象T加X锁以后其他事务不能对T加任何锁只有事务A可以读写对象T直到A释放X锁。
- **更新锁简记为U锁**用来预定要对此对象施加X锁它允许其他事务读但不允许再施加U锁或X锁当被读取的对象将要被更新时则升级为X锁主要是用来防止死锁的。因为使用共享锁时修改数据的操作分为两步首先获得一个共享锁读取数据然后将共享锁升级为排它锁然后再执行修改操作。这样如果同时有两个或多个事务同时对一个对象申请了共享锁在修改数据的时候这些事务都要将共享锁升级为排它锁。这些事务都不会释放共享锁而是一直等待对方释放这样就造成了死锁。如果一个数据在修改前直接申请更新锁在数据修改的时候再升级为排它锁就可以避免死锁。
**InnoDB存储引擎下**的四种隔离级别发生问题的可能性如下:
| 隔离级别 | 第一类丢失更新 | 第二类丢失更新 | 脏读 | 不可重复读 | 幻读 |

Loading…
Cancel
Save