Mysql事务

  1. 事务的四大特性
  2. Mysql隔离级别

事务的四大特性

  • 原子性(Atomicity)
  • 一致性(Consistency)
  • 隔离性(Isolation)
  • 持久性(Durability)
原子性:
一个事务必须被视为一个不可分割的最小工作单元,
整个事务中的所有操作要么全部提交成功,要么全部失败回滚,
对于一个事务来说,不可能只执行其中的一部分操作,这就是事务的原子性

一致性:
数据库总是从一个一致性的状态转换到另一个一致性的状态。
(在前面的例子中,一致性确保了,即使在转账过程中系统崩溃,
支票账户中也不会损失200美元,因为事务最终没有提交,
所以事务中所做的修改也不会保存到数据库中。)

隔离性:
通常来说,一个事务所做的修改操作在提交事务之前,对于其他事务来说是不可见的。
(在前面的例子中,当执行完第三条语句、第四条语句还未开始时,
此时有另外的一个账户汇总程序开始运行,则其看到支票帐户的余额并没有被减去200美元。)

持久性:
一旦事务提交,则其所做的修改会永久保存到数据库。

Mysql隔离级别

一个事务数据进行修改,对于其他事务是否是可见的。在一个事务中,能不能看到别人修改的数据

  • Serializable(串行化)
  • Repeatable read(可重复读)
  • Read committed (读已经提交)
  • Read uncommitted(读未提交)
Serializable(串行化):
  事务串行化顺序执行 ,可避免脏读,不可重复读,       
  这是最高的隔离级别,但是效率低,它通过强制事务排序,使之不可能相互冲突,
  从而解决幻读问题 
  
Repeatable read(可重复读):
别人改数据的事务已经提交,我的事务中也不去读到,除非我提交事务才会读到

Read committed (读已经提交):
别人改数据的事务已经提交,我在我的事务中才能读到 ,可避免脏读的发生

Read uncommitted(读未提交):
最低级别,任何情况都无法保证,就是一个事务读取到其他事务未提交的数据,是级别最低的隔离机制 ,别人改数据的事务尚未提交,我在我的事务中也能读到。 

脏读:
是指在一个事务处理过程里读取了另外一个未提交的事务数据
幻读:
多次查询显示的结果不一样 

Mysql默认的隔离级别是 Repeatable read(可重复读)

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。

文章标题:Mysql事务

本文作者:伟生

发布时间:2019-10-29, 19:23:10

最后更新:2019-10-29, 19:56:22

原始链接:http://yoursite.com/2019/10/29/db_02_mysql_05/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏