数据库之事务

1.事务的定义

事务就是一组数据库操作序列(包含一个或多个SQL操作命令),事务会把所有操作看作是一个不可分割的整体向数据库系统提交或者撤销操作,所有操作要么都执行,要么都不执行。

2. 事务的ACID特性

原子性

一致性

隔离性

持久性

原子性:事务管理的基础,把事务中的所有操作看作是一个不可分割的工作单元,要么都执行,要么都不执行。

一致性:事务管理的目的,保证事务开始前和事务结束后数据的完整性和一致性。

隔离性:事务管理的目的,使多个事务并发操作同一个表数据时,每个事务都有各自独立的数据空间,事务的执行不会受到其他事务的干扰,可通过设置隔离级别解决不同的一致性问题。

持久性:事务管理的结果,当事务被提交以后,事务中的命令操作修改的结果会被持久保存,且不会被回滚。

3. 隔离级别的种类

未提交读 read uncommitted 允许脏读,不可重复读 幻读

提交读 read committed 不允许脏读 ,允许不可重复读 幻读

可重复读 repeatable read 不允许脏读 不可重复读 有条件的允许 幻读(innoDB存储引擎可以不允许)

串行读 serializable 都不允许,相当于表级锁定,但是会影响数据库的读写效果和性能。

4. 如何设置隔离级别?

bash 复制代码
设置隔离级别:
set global transaction isolation level 隔离级别名称;     
#全局级别的设置,可在所有会话有效,需要重新登录才可生效
 
set session transaction isolation level 隔离级别名称;    
#会话级别的设置,在当前会话会话中立即生效
 
 
设置全局事务隔离级别:
set global transaction isolation level read committed; ##永久生效
set @@global.tx_isolation='read-committed';   #重启服务后失效
 
设置会话事务隔离级别:
set session transaction isolation level repeatable read;
set @@session.tx_isolation='repeatable-read';  #重启服务后失效

查询隔离级别

like表示模糊查询 百分号相当于通配符*的作用

bash 复制代码
查询全局事务隔离级别:
show global variables like '%isolation%';
 
查询会话事务隔离级别:
show session variables like '%isolation%';

5.事务管理操作命令

bash 复制代码
begin;             #开启一个事务
....        create database/table    insert into    update XXX set   delete from      #事务性操作
savepoint XX;      #在事务中创建回滚点
rollback to XX;    #在事务中回滚操作到指定的回滚点位置
commit; 或 rollback;    #提交或回滚结束事务
相关推荐
数据组小组4 小时前
免费数据库管理工具深度横评:NineData 社区版、Bytebase 社区版、Archery,2026 年开发者该选哪个?
数据库·测试·数据库管理工具·数据复制·迁移工具·ninedata社区版·naivicat平替
悟空聊架构10 小时前
基于KaiwuDB在游乐场“刷卡+投币”双模消费系统中的落地实践
数据库·后端·架构
IvorySQL10 小时前
PostgreSQL 技术日报 (3月4日)|硬核干货 + 内核暗流一网打尽
数据库·postgresql·开源
进击的丸子13 小时前
虹软人脸服务器版SDK(Linux/ARM Pro)多线程调用及性能优化
linux·数据库·后端
NineData1 天前
NineData智能数据管理平台新功能发布|2026年1-2月
数据库·sql·数据分析
IvorySQL1 天前
双星闪耀温哥华:IvorySQL 社区两项议题入选 PGConf.dev 2026
数据库·postgresql·开源
ma_king1 天前
入门 java 和 数据库
java·数据库·后端
jiayou642 天前
KingbaseES 实战:审计追踪配置与运维实践
数据库
NineData2 天前
NineData 迁移评估功能正式上线
数据库·dba
NineData2 天前
数据库迁移总踩坑?用 NineData 迁移评估,提前识别所有兼容性风险
数据库·程序员·云计算