MySQL入门篇:事物操作(开启事物,提交事物,回滚事物),事物四大特性(ACID),并发事物问题(脏读,不可重复读,幻读),事物隔离级别

发布时间:2024年01月17日

1.事物简介

事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撒销操作
请求,即这些操作要么同时成功,要么同时失败
默认MySQL的事务是自动提交的,也就是说,当执行一条DML语句,MySQL会立即隐式的提交事务

2.事物操作

1.查看/设置事物提交方式(方式1)

SELECT @@autocommit;
SET @@autocommit=0; -- 设置为手动提交事务

2.开启事物(方式2)

START TRANSACTIONBEGIN;

3.提交事物

COMMIT;

4.回滚事物

ROLLBACK;

事物的操作分为两种方式:
①通过设置事物的提交方式为手动提交,通过commit提交事物,通过rollback去回滚事物。
②通过指令start transaction 或者时begin来开启事物,事物执行操作完成以后,如果事物执行成功,执行commit指令,如果执行失败,执行rollback指令

3.事物四大特性(ACID)

1.原子性(Atomicity)

事务是不可分割的最小操作单元,要么全部成功,要么全部失败
如果在事务执行期间发生故障,数据库将自动回滚事务,使数据恢复到事务之前的状态。

2.一致性(Consistency)

事务完成时,必须使所有的数据都保持一致状态
在事务开始之前,数据库的约束条件必须满足。
如果在事务执行期间违反了约束条件,事务将被回滚,使数据库恢复到一致的状态。

3.隔离性(lsolation)

数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行。
事务的执行应该与其他事务相互隔离,每个事务应该感觉不到其他事务的存在。
隔离性确保了同时执行的多个事务不会相互干扰,防止并发执行引起的数据不一致问题。

4.持久性(Durability)

事务一旦提交或回滚,它对数据库中的数据的改变就是永久的。
事务成功提交后,对数据库的修改将永久保存,即使系统发生故障也不会丢失。
持久性保证了数据的可靠性和一致性。

4.并发事物问题

在这里插入图片描述

1.脏读

脏读(Dirty read)是指当一个事务在读取另一个事务未提交的数据时发生的情况。
也就是说,一个事务读取了另一个事务修改但尚未提交的数据。
如果这个未提交的事务最终回滚,那么读取的数据就是无效的,这会导致脏读现象。
脏读可能会产生错误或不一致的结果。

2.不可重复读

不可重复读(Non-repeatable read)是指一个事务在相同的查询语句下多次读取同一行数据时,会得到不同的结果
这是由于在事务执行期间,其他事务对该行进行了修改或删除,导致读取到的数据不一致。

例如,事务A在读取某一行数据后,事务B对该行数据进行了修改或删除,然后事务A再次读取同一行数据时,得到的结果和第一次读取的结果不一样。这种现象就是不可重复读

不可重复读可能会导致数据不一致和逻辑错误的发生。
为了解决不可重复读问题,通常使用锁机制多版本并发控制(MVCC)等方法来保证数据的一致性。

3.幻读

幻读(Phantom Read)是指在一个事务内多次执行同一个查询,但在不同的查询中返回了不同的结果集
它与不可重复读不同之处在于,不可重复读是指读取到的行数据发生了变化,而幻读是指读取到的行数发生了变化

例如,事务A在执行某个查询时,返回了一组符合条件的数据行。
随后,事务B在事务A执行期间插入了一些新的数据行,使得事务A再次执行相同的查询时,返回的结果集中出现了新插入的数据行,就像出现了幻觉一样,即发生了幻读。

幻读问题主要是由于并发事务的插入和删除操作引起的。
为了解决幻读问题,通常可以使用锁机制或多版本并发控制(MVCC)等方法来保证数据的一致性。

5.事物隔离级别

READ UNCOMMITTED:读未提交
READ COMMITTED:读已提交
REPEATABLE READ:可重复读
SERIALIZABLE:可串行化

在这里插入图片描述

注意:事物的隔离级别越高,数据库的并发性能越差,数据安全性也更低

1.查看事务隔离级别

SELECT @@TRANSACTION_ISOLATION;

2.设置事务隔离级别

SET[SESSION|GLOBAL] TRANSACTION ISOLATION LEVEL {READ UNCOMMITTED | READ COMMITTED
|REPEATABLE READ|SERIALIZABLE};
文章来源:https://blog.csdn.net/qq_61888137/article/details/135653339
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。