1.什么是事物
一个事物由一条或多条sql语句组成,这些语句要么全部执行成功,要么全部执行失败
2.为什么需要事物?
保证数据的完整性和一致性
3.事物的特性
-
原子性:一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。
-
一致性:在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设规则,这包含资料的精确度、串联性以及后续数据库可以自发性地完成预定的工作。
-
隔离性:数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。事务隔离分为不同级别,包括读未提交(Read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(Serializable)。
-
持久性:事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。
4.事物管理的对象
DML语句(像insert replace delete)和DCL(像grant)语句,DDL(像create)不受影响
5.输入一条sql语句背后发生了什么?
6.commit与rollback
commit:将内存中的数据存储到磁盘中,持久化。
insert --》内存中的数据--》innodb--》buffer中的数据--》磁盘
rollback:回滚到事物开始前的阶段
savepoint a 在事物中创建一个回滚点a
savepoint b 在事物中创建一个回滚点b
rollback to b 回滚到b这个阶段
rollback to a 回滚到a这个阶段,不过不能再回到b阶段
7. autocommit
8.事物的开始
隐式开始:程序的第一条DML语句执行时或者在COMMIT或ROLLBACK语句执行后第一条DML语句时,自动开始一个新的事物
显示开始:发出BEGIN或者START TRANSACTION语句,该语句会自动关闭自动提交,当事物结束后autocommit变量自动恢复为原来的值
9.实例讲解
一、rollback的使用
二、事物的运行