Mysql 事务概述

什么是事务?一个事务其实就是一个完整的业务逻辑

只有DML才会涉及到事务:insert update delete,只有以上的操作才会对数据进行增删改,要考虑数据的安全问题

存在事务的根本原因是平时的事务并不能通过一个语句就能完成,而是需要多条DML共同完成。因此需要事务的存在。

说到本质上,一个事务就是多条DML语句同时成功或者同时失败。

事务是怎么做到多条DML同时成功或者同时失败的:InnoDB提供了一组用来记录事务性的日志性文件。在事务的执行过程中,可以提交事务也可以回滚事务。

提交事务:

清空事务性活动的日志文件,将数据全部彻底持久化到数据库表中。

提交事务标志着,事务的结束,并且是一种全部成功的结束。

回滚事务:
将之前所有的DML撤销,并且清空事务性活动日志文件。

回滚事务标志着事务的结束,并且是一种全部失败的结束。

提交事务:commit transaction; Mysql中对于事务的操作是默认提交的,就是每执行一条DML语句就提交一次。回滚永远只能回滚到上一次提交位置。自动提交不符合开发的习惯,因为一个业务操作实际上是很多DML操作,不能写一条提交一条。

关闭自动提交机制:

mysql>start transaction;

事务的特性:

ACID:原子性(事务是最小的工作单元)、一致性(所有操作同时成功或者同时失败)、隔离性(A事务在操作的时候另一个事务B在操作也在操作该表)、持久性(将没有保存到硬盘上的数据保存到硬盘上)

事务的隔离级别:

1、读未提交。最低的隔离级别:事务A可以读取到事务B未提交的数据,这种隔离级别存在脏读的现象,即读到了脏数据。这种隔离级别一般都是理论上的,大多数的数据库隔离级别都是二档起步。

2、读已提交。事务A只能读取到事务B提交的数据,解决了脏读的现象,这种隔离级别存在不可重复读取数据。在事务开启之后,由于当前事务还在进行,可能先读取到3条,然后可能读到6条。这种隔离级别是真实的数据。Oracle数据库默认的级别是读已提交。

3、可重复读。事务A开启之后,不断多久,每次在事务A中读取的数据都是一样的。即使事务B对数据进行修改以及提交。解决了不可重复读的问题,但是每次读取到的数据都是刚开启事务的时候的幻象,不是真实的。Mysql中默认的事务隔离级别就是这个。

4、序列化。最高的隔离级别。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值