Mysql数据库-----不玩情景模拟,直击Mysql事务

- Mysql事务概念

:数据库的事物是指一组sql语句注册的数据库逻辑处理单元

- 特点(ACID):

原子性(Atomicity):在事物的sql操作中,对数据的修改要么全部执行成功,要么全部执行失 败,它是基于日志的Redo/Undo机制。;
一致性(Consistent):一致性是指执行事物前后的状态要一致,可以理解为数据一致性;
隔离性(Isalotion): 指事物的独立性,事物相互隔离,与事物设置的隔离级别有关;
持久性(Durable):指事物提交后,这个事物的状态(对数据的新增、更新)会被持久化到数据库中;
四个特点之间的关系:原子性、隔离性和持久性都是为了保障一致性而存在的,一致性为前者的最终目的。

- ACID的原理

  • 原子性基于Redo/Undo机制:将所有数据的更新操作都写入日志;
  • Undo log: 记录数据更新前的值;
  • Redo log:记录数据块被修改后的值。
  • 基于此特性:若数据库执行异常,可通过日志的方式,回滚数据,实现事务的一致性

- 一致性的事务隔离级别:

  • 读未提交(READ UNCOMMITTED):此级别有产生脏读(读取到另一个事务未提交的数据)的隐患,一般是针对update的操作有此隐患;
  • 读提交 (READ COMMITTED):意如其名,读取已经提交的内容;
  • 可重复读 (REPEATABLE READ):解决了不可重复读脏读的问题,但是有幻读(由于非线程安全,可以读取到后面插入的内容)的隐患,幻读隐患主要是针对insert操作;
  • 串行化 (SERIALIZABLE):把事务的执行过程变为顺序执行。。
  • :四个等级从上至下,隔离等级越来越高,但是由于的原因,性能越来越差
  • 锁分类:分享锁/读锁(Shared Locks)、排他锁/写锁(Exclusive Locks) 、间隙锁行锁(Record Locks)、表锁;

Mysql数据库-----不玩情景模拟,直击Mysql事务