知了堂|MySQL 事务介绍

·  阅读 132

MySQL 事务介绍

MySQL 和其它的数据库产品有一个很大的不同就是事务由存储引擎所决定,例如 MYISAM,MEMORY,ARCHIVE

都不支持事务,事务就是为了解决一组查询要么全部执行成功,要么全部执行失败。

MySQL 事务默认是采取自动提交的模式,除非显示开始一个事务。

SHOW VARIABLES LIKE 'AUTOCOMMIT';

修改自动提交模式,0=OFF,1=ON

注意:修改自动提交对非事务类型的表是无效的,因为它们本身就没有提交和回滚的概念,还有一些命令是

会强制自动提交的,比如 DLL 命令、lock tables 等。

SET AUTOCOMMIT=OFF或 SET AUTOCOMMIT=0

1 事务的四大特征是什么?

数据库事务 transanction 正确执行的四个基本要素。ACID,原子性(Atomicity)、一致性(Correspondence)、隔离性

(Isolation)、持久性(Durability)。

(1) 原子性:整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。事务在执行过程中

发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。

(2) 一致性:在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。

(3) 隔离性:隔离状态执行事务,使它们好像是系统在给定时间内执行的唯一操作。如果有两个事务,运行在相同的时间

内,执行 相同的功能,事务的隔离性将确保每一事务在系统中认为只有该事务在使用系统。这种属性有时称为串行化,为了防

止事务操作间的混淆, 必须串行化或序列化请 求,使得在同一时间仅有一个请求用于同一数据。

(4) 持久性:在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。

2 Mysql 中四种隔离级别分别是什么?

读未提交(READ UNCOMMITTED):未提交读隔离级别也叫读脏,就是事务可以读取其它事务未提交的数据。

读已提交(READ COMMITTED):在其它数据库系统比如 SQL Server 默认的隔离级别就是提交读,已提交读隔离

级别就是在事务未提交之前所做的修改其它事务是不可见的。

可重复读(REPEATABLE READ):保证同一个事务中的多次相同的查询的结果是一致的,比如一个事务一开始查询

了一条记录然后过了几秒钟又执行了相同的查询,保证两次查询的结果是相同的,可重复读也是 mysql 的默认隔离级别。

可串行化(SERIALIZABLE):可串行化就是保证读取的范围内没有新的数据插入,比如事务第一次查询得到某个范围的

数据,第二次查询也同样得到了相同范围的数据,中间没有新的数据插入到该范围中。

分类:
后端
标签:
收藏成功!
已添加到「」, 点击更改