mysql:什么是事务及其特性ACID,事务的并发问题,事务的隔离级别

mysql:什么是事务及其特性ACID,事务的并发问题,事务的隔离级别

什么是事务?

一组逻辑操作单元,使数据从一种状态变换到另一种状态
其实一个sql也可以理解为一个事务。
多个sql也可以组成一个sql。

acid:事务的特性

  • 原子性(atomicity)
    原子理解为最小的工作单元,所以一个事务要么全部执行成功,要不全部失败。

  • 一致性(consistency)
    一致性是指事务执行前后,数据从一个 合法性状态 变换到另外一个 合法性状态

  • 隔离型(isolation)
    隔离性,指各个事务之间的操作互补影响,通过锁机制实现。

  • 持久性(durability)
    持久性,就是事务对数据的修改是可以持久化的,长期保存。

数据并发问题

  • 脏写
    对于两个事务 Session A、Session B,如果事务Session A 修改了 另一个 未提交 事务Session B 修改过 的数据,那就意味着发生了 脏写

  • 脏读
    对于两个事务 Session A、Session B,Session A 读取 了已经被 Session B 更新 但还 没有被提交 的字段。之后若 Session B 回滚 ,Session A 读取 的内容就是 临时且无效 的。

  • 不可重复读

  • 幻读
    对于两个事务Session A、Session B, Session A 从一个表中 读取 了一个字段, 然后 Session B 在该表中 插入 了一些新的行。 之后, 如果 Session A 再次读取 同一个表, 就会多出几行。那就意味着发生了幻读。

sql中的四种隔离级别

  • READ UNCOMMITTED :读未提交
    读未提交,在该隔离级别,所有事务都可以看到其他未提交事务的执行结
    果。不能避免脏读、不可重复读、幻读。

  • READ COMMITTED :读已提交
    一个事务只能看见已经提交事务所做
    的改变。这是大多数数据库系统的默认隔离级别(但不是MySQL默认的)。可以避免脏读,但不可
    重复读、幻读问题仍然存在。

  • REPEATABLE READ :可重复读
    可重复读,事务A在读到一条数据之后,此时事务B对该数据进行了修改并提
    交,那么事务A再读该数据,读到的还是原来的内容。可以避免脏读、不可重复读,但幻读问题仍
    然存在。这是MySQL的默认隔离级别。

  • SERIALIZABLE :可串行化
    确保事务可以从一个表中读取相同的行
    可串行化,确保事务可以从一个表中读取相同的行。在这个事务持续期间,禁止其他事务对该表执行插入、更新和删除操作。所有的并发问题都可以避免,但性能十分低下。能避
    免脏读、不可重复读和幻读。
    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

谷咕咕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值