什么是数据库隔离级别?它们有什么作用?

数据库隔离性允许事务在执行时,好像没有其他并发运行的事务存在一样。

下面的图示演示了四个隔离级别。e934bb337b63d4f2f781e3fa66e482fc.jpeg

🔹Serializable(可串行化):这是最高的隔离级别。并发事务保证按顺序执行。

🔹Repeatable Read(可重复读):事务期间读取的数据与事务开始时相同。

🔹Read Committed(已提交读):只能在事务提交后读取数据修改。

🔹Read Uncommitted(未提交读):在事务提交前,数据修改可以被其他事务读取。

隔离性由MVCC(多版本一致性控制)和锁定保证。

上面的图示以可重复读为例,演示了MVCC如何工作:

对于每一行,都有两个隐藏的列:transaction_id和roll_pointer。当事务A开始时,将创建一个transaction_id = 201的新Read View。不久之后,事务B开始,创建一个transaction_id = 202的新Read View。

现在,事务A将余额修改为200,创建了一行新的日志记录,并且roll_pointer指向旧的行。在事务A提交之前,事务B读取了余额数据。事务B发现事务ID 201未提交,因此它读取下一个提交的记录(transaction_id = 200)。

即使事务A提交后,事务B仍然根据事务B开始时创建的Read View读取数据。因此,事务B始终读取余额为100的数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小技术君

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

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

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

打赏作者

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

抵扣说明:

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

余额充值