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 小时前
danci 2:创建的单词书到底存在哪里?从 Supabase 一路理解 ORM、Drizzle 和 RLS
数据库·后端·node.js
九皇叔叔3 小时前
《MySQL 体系架构详解:Server 层、SQL 执行流程与 InnoDB、MyISAM、MEMORY 存储引擎》
sql·mysql·架构
橙子家3 小时前
OSS 文件上传的几个风险点和解决方案
数据库
2601_962066495 小时前
【Sql Server】Update中的From语句,以及常见更新操作方式
android·java·数据库
愤怒的苹果ext5 小时前
MySQL Shell备份恢复数据库
数据库·mysql·备份恢复·mysqlsh
数字新视界7 小时前
DCIM管理系统的技术架构与部署模式详解
数据库·物联网·数据中心·数据中心基础设施管理·dcim管理系统
何以解忧,唯有..7 小时前
Pydantic 介绍与使用:Python 数据校验的现代方案
数据库·python·microsoft
超兔一体云8 小时前
MySQL索引优化实战——从慢查询到索引调优
后端·mysql
这个DBA有点耶9 小时前
数据库容灾进入“秒级时代”:同城双活架构原理、关键技术选型与落地实践
数据库·架构·dba
2601_962074819 小时前
大数据-264 实时数仓 - Canal MySQL的binlog研究 存储目录 变动信息 配置MySQL
大数据·数据库·mysql