其他分享
首页 > 其他分享> > 事务及事务隔离级别

事务及事务隔离级别

作者:互联网

一、 事务及事务隔离级别

以下内容围绕:

事务是什么?
事务是作为单个逻辑工作单元执行得一系列操作,也就是“要么全部执行,要么全部不执行”。
假如 A 要去银行取款 100 元,这次的取款过程会涉及两个操作:

事务的 ACID 特性
事务必须要有四个属性:

InnoDB 存储引擎默认的事务隔离级别是可重复读,它不能满足隔离性要求

并发事务会带来什么样的问题

多线程程序中,如果在并发运行的过程中对相同的数据进行了修改,就可能会引起一些问题,总结下来,可能出现的问题一共有三种:脏读、不可重复读、幻读。

不可重复读与幻读从概念上来说,是非常相似的。区分它们只要记住:不可重复读指的是对原来存在的数据做修改,而幻读指的是新增或者删除数据。

二、 解读事务隔离级别

SQL 标准定义了四种隔离级别,由低到高依次为:

它们可以逐个解决脏读、不可重复读、幻读这几类问题,除 SERIALIZABLE 之外的另外三种都不能解决所有的问题。所以,在实际的应用中,一定是有所取舍的。

隔离界别解决的问题:

隔离级别 脏读 不可重复读 幻读
READ-UNCOMMITTED No No No
READ-COMMITTED Yes No No
REPEATABLE-READ Yes Yes No
SERIALIZABLE Yes Yes Yes

具体选择哪一种隔离级别应该是多个维度的考虑,例如:事务请求锁的多少(性能问题)、能够解决什么问题、业务特点等等。一般情况下,使用 InnoDB 存储引擎,我们会选择 READ-COMMITTED。

标签:事务,隔离,幻读,级别,数据,读取
来源: https://www.cnblogs.com/liflower/p/16133333.html