事务指的是保证一组数据库操作,要么全部成功,要么全部失败。
在MySQL中,事务支持是在引擎层实现的,MySQL是一个支持多引擎的系统,但并不是所有的引擎都支持事务。如:MySQL原生的MyISAM引擎就不支持事务,这也是MyISAM被InnoDB取代的重要原因之一。
事务ACID特性事务的ACID特性指的是原子性、一致性、隔离性、持久性。
原子性(Atomicity):指的是事务中所有操作要么全部成功,要么全部失败。
一致性(Consistency):指的是事务执行前后,数据始终处于一致性状态,不会出现数据丢失。
隔离性(Isolation):指的是多个事务并发执行时,各事务在执行过程中所做的修改对其他事务不可见,直到该事务成功提交。
持久性(Durability):指的是事务一旦提交,对数据库所做的修改将会永久保存。
事务实现原理原子性:通过undolog来实现。
持久性:通过binlog+redolog来实现。
隔离性:通过读写锁+MVCC来实现。
一致性:通过回滚、恢复以及在并发环境下的隔离做到一致性。
SQL执行流程一条SQL语句的完整执行流程。如图所示:
其中:
步骤5:如果将参数innodb_flush_log_at_trx_