mysql 悲观锁 乐观锁 四种隔离级别 四大特性 浅解

mysql 悲观锁

在执行SQL语句时,把要操作的数据锁住,不让其他SQL语句执行操作

mysql 乐观锁

在执行SQL语句时,不用锁住数据,如果出现问题,交由用户处理

1.事务的四大特性(ACID)

1.原子性

原子性是指事务包含的一系列操作要么全部成功,要么全部回滚,不存在部分成功或者部分回滚,是一个不可分割的操作整体。

2.一致性

事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。

3.隔离性

多个并发事务之间要相互隔离
如果不考虑事务的隔离性,会发生以下几个问题:

1.脏读

事务A读取到了事务B未提交的数据

2.不可重复读

事务A中发生了两次读操作,第一次读操作和第二次读操作之间,事务B对数据进行了修改,这时两个事务读取的数据不一致。

3.幻读

事务A对一定范围的数据进行批量修改,事务B在这个范围增加一条数据,这时候事务A就会丢失对新增数据的修改。

4.持久性

一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的,即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作。

2.事务的隔离级别

  1. Serializable (串行化):可避免脏读、不可重复读、幻读的发生。
  2. Repeatable read (可重复读):可避免脏读、不可重复读的发生。
  3. Read committed (读已提交):可避免脏读的发生。
  4. Read uncommitted (读未提交):最低级别,任何情况都无法保证。

如表所示
对勾表示不可避免  叉表示可避免
√表示不可避免 ×表示可避免 在表中性能从上往下依次递减

总结

其实说来说去也就三方面的概念
1)四大隔离级别:串行化、可重复读、读已提交、读未提交;
2)四大特性(ACID):原子性、一致性、隔离性、持久性;
3)三个问题:脏读、不可重复度、幻读;

猜你喜欢

转载自blog.csdn.net/weixin_46591962/article/details/110622023