事务
事务的组成可由一条非常简单的SQL语句组成,也可由一组复杂的SQL语句组成。
特征
事务具有以下特征:
(1)在数据提交时,可以确保要么所有修改都已保存,要么所有修改不保存;
(2)事务是访问并更新数据库各种数据项的一个执行单元;
(3)在innodb下,每一条语句都是事务,可以通过set autocommit = 0 (默认值1,不需要手动添加开始事务和提交语句),设置当前会话手动提交,一般需要执行多条语句的时候,就会显式地开始事务。
指令
-- 显示开启事务
BEGIN
-- 提交事务,并使得已对数据库做的所有修改持久化
COMMIT
-- 回滚事务,结束用户的事务,并撤销正在进行的所有未提交的修改
ROLLBACK
-- 创建一个保存点,一个事务可以有多个保存点
SAVEPOINT identifier
-- 删除一个保存点
RELEASE SAVEPOINT identifier
-- 事务回滚到保存点
ROLLBACK TO [SAVEPOINT] identifier
事务的ACID特性
(1)原子性
a. 事务要么都做(提交),要么都不做(回滚);
b.事务是访问并更新数据库各种数据的执行单元,执行单元是不可分割的单位;
c.通过undolog来实现回滚(语句的操作都会记录在undolog中),当回滚时,回放事务具体操作的逆运算
(2)隔离性
a.mysql在处理每一个连接的请求是并发的,所以需要隔离性;
b.事务的隔离性要求每个读写事务对象对其他事务的操作对象能互相分离,也就是事务提交前对其他事务不可见
c.通过MVCC和锁来实

本文详细介绍了MySQL事务的特征、ACID特性、隔离级别、MVCC、锁及其算法,包括重做日志和回滚日志在事务持久性和回滚中的作用,强调了不同隔离级别下如何处理并发异常。
最低0.47元/天 解锁文章
204

被折叠的 条评论
为什么被折叠?



