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};
相关推荐
爬也要爬着前进2 小时前
redis主从搭建
数据库·redis·缓存
@Mike@2 小时前
02-数据库学习笔记(SQL引擎)
数据库·笔记·学习
王琦03182 小时前
生产环境中使用通用二进制包安装
mysql
踏月的造梦星球3 小时前
达梦数据库执行计划与性能分析入门:EXPLAIN、AUTOTRACE 与 ET
服务器·数据库·oracle
笃行3503 小时前
国产化落地避坑 · 干货向|Oracle 迁金仓 KES,我把外连接消除排在隐性陷阱第一位
数据库
老纪的技术唠嗑局3 小时前
花一年时间整理出的:AI 数据库混合搜索入门实践
数据库
川石课堂软件测试4 小时前
安全测试|常见SQL注入攻击方式、实例及预防
服务器·数据库·sql·功能测试·测试工具·安全·单元测试
笃行3504 小时前
国产化落地避坑 · 干货向|迁移后那条「测试能过、一上生产就查空」的 SQL,多半栽在 WHERE 函数顺序上
数据库
蓝田~5 小时前
MySQL慢查询怎么优化?B+Tree索引原理+MVCC读不阻塞写+EXPLAIN执行计划,从5秒到0.05秒
数据库·mysql
Herbert_hwt5 小时前
MySQL学习前言:关于MySQL的历史与当下学习的必要性
mysql