MySQL事务,事务类型、事务特性、并发事务及事务的四个隔离级别

事务

事务(transaction):一个数据库事务由一条或者多条sql语句构成,它们形成整个逻辑的工作单元
这些sql语句要么全部执行成功,要么全部执行失败
事务是保证数据的完整性和一致性的重要手段

START TRANSACTION / BEGIN
    SELECT ...
    UPDATE ...
    INSERT ...
COMMIT / ROLLBACK    

COMMIT:提交,让缓存里的数据写到磁盘
ROLLBACK:回滚,撤销操作,在缓存里删除数据

事务类型

  1. DML事务:由一条或者多条DML语句构成
  2. DDL事务:总是由一条DDL语句构成
  3. DCL事务:总是由一条DCL语句构成

事务的4个特性:ACID

  • 原子性(Atomicity)
    原子的概念就是不可分割,事务是数据库的逻辑工作单位,事务中包含的各操作要么都做,要么都不做

  • 一致性(Consistency)
    事务执行的结果必须是使数据库从一个状态变到另一个状态

  • 隔离性(Isolation)
    一个事务的执行不能被其它事务干扰,解决并发带来问题

  • 持续性(Durability)
    也称永久性,指一个事务一旦提交,它对数据库中的数据的改变就应该是永久性的,写到磁盘中去

四个特性中,原子性是基础,一致性是约束条件,隔离性是手段,持久性是目的

并发事务的四个问题

在介绍事物的四个隔离级别之前,先说一下并发事务会带来的4个问题,并做简单介绍

  1. 脏读
  2. 不可重复读
  3. 幻读
  4. 丢失更新

脏读:一个事务看到了另一个事务未提交的更新数据;当事务读取尚未提交的数据时,就会发生这种情况

不可重复读:在同一事务中,两次读取同一数据,得到内容不同,也就是有其他事务更改了这些数据

幻读:在同一个事务中,同样的条件,第1次和第2次读出来的记录数不一样

丢失更新:一个事务的修改覆盖了另一个事务所做的修改

事务的四个隔离级别

  • read uncommitted:读未提交
    四个都允许,隔离最低级别,并发性最高
  • read commited:读已提交
    不允许脏读,并发性很好,再要求并发高的场景中时常使用
  • repeatable read:可重复读
    默认的隔离级别,只允许丢失更新,隔离性和并发性都很好
  • serializable:顺序读
    隔离最高级别,并发性最差
    事务强制顺序执行,避免了事务间的冲突,就不会发生并发事务问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值