MySQL事务

目录

[1. 概述](#1. 概述)

[2. 四大特征(A,C,I,D)](#2. 四大特征(A,C,I,D))

[3. 事务步骤](#3. 事务步骤)

[4. 隔离性](#4. 隔离性)

[4.1 隔离级别](#4.1 隔离级别)

[4.2 隔离现象](#4.2 隔离现象)

[4.3 查看与设置隔离级别](#4.3 查看与设置隔离级别)


1. 概述

事务(transaction)类似于编程语言中的 方法,包含一组SQL指令。

事务只对 DML ( insert,update,delete 三个关键词的语句 )语句有效;

事务是不可分割的,是最小的工作单元;

事务在数据库中表示一件完整的事情,因此在同一个事物当中,多条DML语句要么同时成功,要么同时失败;

2. 四大特征(A,C,I,D)

原子性(Atomicity):事务是最小的操作单位,其所有操作要么全部成功执行,要么全部失败;

一致性(Consistency):守恒原则,数据执行事务前后的总数是不变的;

隔离性(Isolation):多个用户并发访问同一个数据库时,数据库给每个用户开启的事务,不会被其他事务的操作干扰,即不同的事物之间是不会被影响的;

持久性(Durability):事务一旦被提交,对数据库造成的影响是永久的,即使是数据库系统遇到故障,也不会丢失提交事务的操作;

3. 事务步骤

该指令步骤如下:开启事务,回滚事务,提交事务

开启事务:start transaction 或者 begain

回滚事务:rollback;

提交事务:commit

当然,前面学习 DDL 语句时,每条 DDL 语句是事务默认情况下自动提交的;

如下,是开启事务,提交事务,数据发生持久改变;

如下,开启事务,回滚事务(发生异常会回滚事务),数据没有改变;

没有提交事务之前都不算真正更改数据。

单独执行提交事务:commit,数据才按照事务真正被修改;

4. 隔离性

前面说事务有四个特性,其中隔离性是很重要的一个特性。

4.1 隔离级别

可以把 "隔离" 看作一堵墙,隔开A 事务、B 事务,墙的厚度就是隔离程度;

根据隔离程度的不同,有以下排序(隔离级别越高,效率越低):

隔离级别从低到高排序:读未提交 < 读提交 < 可重复读 < 串行化;

读未提交:隔离级别最低,一般不会用到;

读提交:提交事务后读到的数据;

串行化:多个事务不能并发执行,效率最低,一般不会用到;

oracle 数据库默认的隔离级别是 读提交 ,MySQL 数据库默认的隔离级别是 可重复读

4.2 隔离现象

脏读,不可重复读,幻读是不同隔离级别存在的不同现象

现象的严重性从高到低程度:脏读 > 不可重复读 > 幻读 ;

脏读:读到了另一个事务没有提交的数据;

不可重复读:在一个事务多次重复读取数据,得到的结果是不一样的,这是由于其他事务对数据集进行了修改,导致的结果不一致;

幻读 :在事务执行过程中,前后两次查询得到的结果集不一致;

4.3 查看与设置隔离级别

查看当前会话的隔离级别(对当前事务):select @@transaction_isolation ;

查看全局的隔离级别(对所有事务): select @@local.transaction_isolation ;

设置当前事务的隔离级别:set session transaction isolation level 隔离等级;

设置全局事务的隔离等级:set global transaction isolation level 隔离等级;

相关推荐
20242817李臻13 分钟前
20242817李臻-安全文件传输系统-项目验收
数据库·安全
行思理25 分钟前
MongoDB慢查询临时开启方法讲解
数据库·mongodb
bbsh209936 分钟前
WebFuture 升级提示“不能同时包含聚集KEY和大字段””的处理办法
数据库·sql·mysql·webfuture
霖檬ing43 分钟前
Python——MySQL远程控制
开发语言·python·mysql
Zfox_5 小时前
Redis:Hash数据类型
服务器·数据库·redis·缓存·微服务·哈希算法
陈丹阳(滁州学院)7 小时前
若依添加添加监听容器配置(删除键,键过期)
数据库·oracle
远方16098 小时前
14-Oracle 23ai Vector Search 向量索引和混合索引-实操
数据库·ai·oracle
GUIQU.9 小时前
【Oracle】数据仓库
数据库·oracle
恰薯条的屑海鸥9 小时前
零基础在实践中学习网络安全-皮卡丘靶场(第十六期-SSRF模块)
数据库·学习·安全·web安全·渗透测试·网络安全学习
咖啡啡不加糖9 小时前
Redis大key产生、排查与优化实践
java·数据库·redis·后端·缓存