前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >技术篇:数据库的事务隔离级别

技术篇:数据库的事务隔离级别

作者头像
伊泽瑞尔
发布2022-06-01 08:38:06
1970
发布2022-06-01 08:38:06
举报
文章被收录于专栏:大数据与知识图谱

一、背景

本篇文章主要讲解数据库中事务的四大特性(ACID)和事务的隔离级别。

二、事务的基本要素(ACID)

一个支持事务操作的数据库必须要具备以下四个特性:

原子性(Atomicity)

原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。

一致性(Consistency)

事务前后数据的完整性必须保持一致。比如A向B转账,A扣100元,B收到100元,符合逻辑运算。

隔离性(Isolation)

事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,多个并发事务之间要相互隔离。

持久性(Durability)

持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来即使数据库发生故障也不应该对其有任何影响。

三、事务的并法问题

脏读

指当一个事务正在访问数据,并且对数据进行了修改,而这种数据还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。因为这个数据还没有提交那么另外一个事务读取到的这个数据我们称之为脏数据。根据脏数据所做的操作肯能是不正确的。

不可重复读

指在一个事务内,多次读同一数据。在这个事务还没有执行结束,另外一个事务也访问该同一数据,那么在第一个事务中的两次读取数据之间,由于第二个事务的修改第一个事务两次读到的数据可能是不一样的,这样就发生了在一个事物内两次连续读到的数据是不一样的,这种情况被称为是不可重复读。

幻读

是指在一个事务内读取到了别的事务插入的数据,导致前后读取数量总量不一致。(一般是行影响,比如:多了一行)。

不可重复读的和幻读很容易混淆,不可重复读侧重于修改,幻读侧重于新增或删除。解决不可重复读的问题只需锁住满足条件的行,解决幻读需要锁表。

四、Mysql事务隔离级别

Mysql数据库事务的隔离级别有4种,由低到高分别为Read uncommitted(读未提交)、Read committed(读已提交)、Repeatable read(可重复读)、Serializable(串行化)。

1.读未提交(Read uncommitted)

这种事务隔离级别下,select语句不加锁。此时,可能读取到不一致的数据,即“脏读 ”。这是并发最高,一致性最差的隔离级别。

2.读已提交(Read committed)

可避免脏读的发生。

3.可重复读(Repeatable read)

MySql默认隔离级别。可避免脏读、不可重复读的发生。

4.串行化(Serializable )

可避免脏读、不可重复读、幻读的发生。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大数据与知识图谱 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、背景
  • 二、事务的基本要素(ACID)
    • 原子性(Atomicity)
      • 一致性(Consistency)
        • 隔离性(Isolation)
          • 持久性(Durability)
          • 三、事务的并法问题
            • 脏读
              • 不可重复读
                • 幻读
                • 四、Mysql事务隔离级别
                  • 1.读未提交(Read uncommitted)
                    • 2.读已提交(Read committed)
                      • 3.可重复读(Repeatable read)
                        • 4.串行化(Serializable )
                        相关产品与服务
                        云数据库 SQL Server
                        腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
                        领券
                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档