Mysql--07

一、事务的本质

事务是一组不可分割的操作集合,所有操作要么同时成功提交 ,要么同时失败回滚,保证数据的完整性。


二、事务的四大特性(ACID)
  • 原子性(Atomicity):事务是最小操作单元,不可分割,要么全成功,要么全失败。
  • 一致性(Consistency):事务完成后,所有数据必须保持一致的业务状态。
  • 隔离性(Isolation):多个并发事务之间互不干扰,各自在独立环境中运行。
  • 持久性(Durability):事务提交或回滚后,对数据的修改是永久的,即使系统故障也不会丢失。

三、事务的基本操作
  1. 开启事务

    sql

    复制代码
    START TRANSACTION;
    -- 或
    BEGIN;
  2. 提交事务 (使操作永久生效)

    sql

    复制代码
    COMMIT;
  3. 回滚事务 (撤销所有未提交操作)

    sql

    复制代码
    ROLLBACK;
  4. 事务提交方式管理

    • 查看自动提交状态:SELECT @@autocommit;
    • 关闭自动提交(手动管理事务):SET @@autocommit = 0;
    • MySQL 默认是自动提交,即单条 DML 语句会自动开启并提交事务。

四、并发事务引发的问题

表格

问题 描述
脏读 一个事务读到了另一个事务未提交的数据。
不可重复读 同一个事务内,两次读取同一条记录,结果不一致(数据被其他事务修改并提交)。
幻读 同一个事务内,按条件查询时无数据行,但插入时发现数据已存在(范围查询受其他事务插入 / 删除影响)。

五、事务隔离级别

MySQL 默认隔离级别为 Repeatable Read(可重复读),隔离级别越高,数据越安全,但性能越低。

表格

隔离级别 脏读 不可重复读 幻读
Read uncommitted(读未提交) ✔️ ✔️ ✔️
Read committed(读已提交) ✔️ ✔️
Repeatable Read(可重复读) ✔️
Serializable(串行化)

操作命令

  • 查看当前隔离级别:SELECT @@TRANSACTION_ISOLATION;

  • 设置隔离级别: sql

    复制代码
    -- 会话级/全局级设置
    SET [SESSION|GLOBAL] TRANSACTION ISOLATION LEVEL 
    {READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE};
相关推荐
素材积累3 小时前
博士后出站来深可申请的项目补贴等
数据库
_1_74 小时前
SQL Server 磁盘满了 收缩日志
数据库·sqlserver
basketball6164 小时前
Redis基础:1. Redis介绍
数据库·redis·缓存
李可以量化5 小时前
成交量的终极量化策略:价量共振指标完整实现(下篇)
前端·数据库·人工智能
汽车仪器仪表相关领域6 小时前
南华 NHAT-610 柴油车排放测试仪 产品详解
数据库·功能测试·汽车·压力测试·可用性测试
我滴老baby7 小时前
工业时序数据实战:基于 DolphinDB 流计算引擎的实现与调优
数据库
睡不醒男孩0308238 小时前
TiDB数据库调研
数据库·tidb
珠***格8 小时前
实操落地|防逆流装置的安装规范、调试标准与故障处置
网络·数据库·人工智能·分布式·能源·边缘计算
Omics Pro9 小时前
3种蛋白结构输入方式!已申报欧洲发明专利
数据库·人工智能·python·机器学习·plotly
itfallrain9 小时前
Spring 构造器循环依赖排查:@RequiredArgsConstructor + @Lazy 到底有没有生效
数据库·python·spring