MySQL怎么运行的系列七25张图爆

数据库事务是mysql执行操作的最小逻辑单位,一个事务可以包含一个或者多个sql语句,这些sql要么都执行成功要么都执行失败。并发操作下,事务的控制使多个事务的sql对同一对象的修改是安全的。

01事务的四个特性概述

原子性(Atomicity)

原子性是指事务中的所有操作作为一个整体,要么全部成功,要么全部失败。

原子性能实现的关键是在失败的时候能够发生回滚,这依赖于undolog日志。事务在更改数据之前会将要更改的数据备份到undolog中(undolog会保存更改前的数据,这是一个行级别的历史数据),如果发生了错误或者用户执行了rollback,就可以通过undolog将数据恢复到事务开始之前的状态。

Undolog怎么做到回滚的呢?你可以理解为:

当你在事务中delete一条记录时,undolog会记录一条对应的insert记录。

当你在事务中insert一条记录的时候,undolog会记录一条对应的delete记录

当你在事务中update一条记录时,它记录一条相反的update记录。

当rollback回滚的时候,就会执行这些相反的操作。

当然了,undolog里面并不会真的记录这些一条条的sql命令,而是存着变更前行数据的内容。

隔离性(isolation)

隔离性是指并发执行的事务不会相互影响,并发执行的操作的结果和他们串行执行时的结果一样。

隔离性是通过锁和MVCC来实现的。锁会再后面的章节中详述,这里先不按下不表,只需要知道隔离性是通过锁来实现的即可。

持久性(Durability)

持久性是指事务一旦提交,对数据库的更新是持久的,事务的所有更改都写入到了磁盘中。之后任何的事务或者故障都不会导致上一个事务数据丢失。

持久性是通过redolog日志实现的(前滚日志),redo日志记录着一个事务中更改后的数据。

如果事务


转载请注明:http://www.aierlanlan.com/grrz/296.html

  • 上一篇文章:
  •   
  • 下一篇文章: