MySQL数据库基础篇——事务

一.什么是事务?

事务就是由单独单元的一个或多个sql语句组成,在这个单元中,每个sql语句都是相互依赖的。而整个单独单元是作为一个不可分割的整体存在。往通俗的讲,事务就是一个整体,里面的内容要么都执行成功,要么都不成功。不可能存在部分执行成功而部分执行不成功的情况。对于MySQL存储引擎,Innodb支持事务,而myIsam等不支持事务。

二.事务操作

例如:

三.事务的四大特性(ACID)

  • 原子性:每个事务都是不可分割的最小单元,事务操作只有都发生和都不发生两种情况。
  • 一致性:事务必须使数据库从一个一致状态变换到另外一个一致状态,中间状态是不可见的。
  • 隔离性:事务的执行不会被其它事务干扰。即并发的事务之间互不干扰。
  • 持久性:事务一旦提交成功,对数据库的数据改变是永久的。

四.事务分类

事务分为隐式事务和显式事务两种。我们的DML语句(insert、update、delete)就是隐式事务。

隐式事务:该事务没有明显的开启和结束标记,它们都具有自动提交事务的功能。

显示事务:该事务具有明显的开启和结束标记;也是本文重点要讲的东西。使用显式事务的前提是你得先把自动提交事务的功能给禁用。禁用自动提交功能就是设置autocommit变量值为0(0:禁用 1:开启)

五.并发事务问题

并发事务问题:A事务和B事务在操作数据库表时,所引发的一些问题。

  1. 脏读:一个事务读到另一个事务还没有提交的数据
  2. 不可重复读:一个事务先后读取同一条记录,但两次读取的数据不同
  3. 幻读:一个事务按照条件查询数据时,没有对应的数据行,但插入数据时,又发现数据已经存在

为了避免以上出现的各种并发问题,我们就必然要采取一些手段。mysql数据库系统提供了四种事务的隔离级别,用来隔离并发运行各个事务,使得它们相互不受影响,这就是数据库事务的隔离性。

六.事物隔离级别

mysql中的四种事务隔离级别如下:

了解: oracle支持两种事务隔离级别:read committed、serializable。

oracle默认的事务隔离级别是:read committed。

mysql的默认事务隔离级别是:repeatable read。

注:事务隔离级别越高,数据越安全,但性能越低

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值