MySQL事务的可串行化_真正的事务是可串行化的

本文探讨了数据库事务隔离性的重要性,尤其是MySQL的可串行化隔离级别。CockroachDB默认提供强隔离以确保数据一致性,而其他数据库可能选择性能优先的隔离级别。低隔离级别可能导致事务异常,如脏读、不可重复读和幻读。研究表明,弱隔离可能在实际应用中引发错误,如ACIDRain现象,影响应用的财务安全。
摘要由CSDN通过智能技术生成

写在前面

本文是一篇CockroachDB官方博客的译文,主要阐述数据库实现串行化隔离的必要性。关于事务隔离性,Ivan曾经在“分布式数据库之事务隔离性”中从理论方面进行过系统的介绍,本文则是从数据库厂商的角度来阐述对隔离性的理解,大家可以将两篇文章结合起来,对隔离性有更加全面客观的理解。CockroachDB的理念是首先保证安全性而后追求高性能,所以花了很大精力实现Serializable Snapshot Isolation,是目前极少的有实用价值的SERIALIZABLE实现。当然,业界也有厂商对可串行化方面投入的必要性持不同观点。Ivan猜测CockroachDB的理念可能是受到了PostgreSQL的影响,毕竟后者是率先支持Serializable Snapshot Isolation的商业数据库,并且CockroachDB在SQL层面也是以兼容PostgreSQL为目标。

正文

大多数数据库都提供了事务隔离级别的选择,可以在正确性和性能之间进行权衡。然而,高性能的代价就是开发人员必须小心研究事务交互否则就会引入一些微妙的错误。CockroachDB 默认提供了强隔离(SERIALIZABLE)可以确保你的应用总是看到期望的数据。在本文中我们将解释这意味着什么以及不充分的隔离在如何影响真实世界的应用。

SQL标准中的隔离性

SQL标准定义四个隔离级别

SERIALIZABLE

REPEATED READ

READ COMMITTED

READ UNCOMMITTED

SERIALIZABLE事务运行时好像在同一时刻仅有一个事务运行;其他隔离级别允许出现SQL标准称作的“三种phenomena”脏读、不可重复读、幻读。后续的研究(此处指Critique,Ivan在文章“分布式数据库之事务隔离性”中已经进行了介绍)定义了额

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值