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};
相关推荐
唐青枫1 天前
MySQL JSON 实战详解:从存储、查询、更新到 JSON_TABLE 与索引
sql·mysql
吃糖的小孩1 天前
给 QQ AI 机器人设计“可控记忆”:会话摘要、手动长期记忆与角色卡边界
数据库
小满8781 天前
5.Mysql事务隔离级别与锁机制
mysql
笃行3502 天前
金仓数据库数据安全双防线:静态存储加密与传输加密实战
数据库
笃行3502 天前
金仓数据库物理备份实战:sys_rman 全流程演练与误覆盖抢救
数据库
笃行3502 天前
金仓数据库逻辑备份实战:从全库导出到 Schema 替换的完整闭环
数据库
元Y亨H2 天前
技术笔记:MySQL 字符集排序规则与大小写敏感性问题解决方案
mysql
SelectDB3 天前
阶跃星辰基于 SelectDB 构建 PB 级 Agent 可观测平台
大数据·数据库·aigc
这个DBA有点耶3 天前
GROUP BY优化全解:如何写出既不丢数据又飞快的分组查询
数据库·mysql·架构