一、乐观锁和悲观锁
1.悲观锁是指假设并发更新会发生冲突,不管冲突是否会发生,都会使用锁机制。
优点: 完全保证数据安全。
缺点:锁机制会有额外开销,并发度降低。 可能会产生死锁。
2. 乐观锁是指假设数据不会发生冲突,只在数据提交更新的时候,才会对数据是否冲突进行检测(通过版本号),如果发现冲突,则认为是过期数据。
优点: 没有锁机制的额外开销,并发高,不会出现死锁。
缺点:回滚重试性能孙损耗明显。
二、Innodb的四种隔离级别,mysql的默认隔离级别是
首先要知道脏读、不可重复读、幻读的概念。
脏读:一个事务读取到另一个事务未提交的数据。
不可重复读:同一事务,多次读取同一数据,结果返回不同。也就是读取到了其他事务已提交的数据。 相反,可重复读也就是同一事物多次读取同一数据,结果返回都是一样的。
幻读:主要指的是,一个事务读取到了另一个事务新insert的数据。
四种隔离级别如下:
未提交读(Read uncommitted) 脏读、不可重复读、幻读。
已提交读(Read committed) 不可重复读、幻读。
可重复读(Repeatable read) 幻读。 --- mysql 默认的隔离级别。 但是mysql在此基础上,通过事务版本号的形式解决了可能会出现幻读的问题。mvcc 多版本并发控制
可串行化(SERIALIZABLE) 三种问题都不存在。
三、事务的四种特性
事务是并发控制的基本单位,要么全执行,要么全不执行。
原子性、一致性、隔离性、持久性。
原文:https://www.cnblogs.com/camouflage/p/12323762.html