第一类丢失更新
某个事务的回滚,导致另外一个事务已更新的数据丢失
第二类丢失更新
某一个事务的提交,导致另外一个事务已更新的数据丢失
脏读
某一个事务,读取了另外一个事物未提交的数据
不可重复读
某一个事务,对同一个数据前后读取的结果不一致
幻读
某个事务,对同一个表前后查询的行数不一致
实现机制
悲观锁(数据库)
共享锁(s锁)
事务A对某数据加了共享锁后,其他事务只能对该数据加共享锁,不能加排他锁
排他锁
事务A对某数据加了排他锁后,其他事务两个锁都不能加
乐观锁(自定义)
版本号 时间戳等
在更新数据前,检查版本号是否变化。若变化则取消本次更新,否则就更新数据(版本号+1)