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};
相关推荐
爱奥尼欧13 分钟前
【MySQL】建库就是建目录?字符集校验规则、备份恢复与alter改表实操
mysql
大虾别跑23 分钟前
mysql5.7升级
mysql
adinnet20261 小时前
为什么 RAG 需要 Milvus?向量数据库到底存了什么
大数据·数据库
geovindu1 小时前
sql: Transaction & Concurrency Patterns using mysql 9.0
mysql·数据库开发·数据库架构
Elastic 中国社区官方博客1 小时前
使用 Elasticsearch 和 Jina 进行 AI 视频搜索:精准找到你需要的视频片段秒数
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
Omics Pro1 小时前
新型条件传输模型!虚拟细胞扰动预测
数据库·人工智能·算法·机器学习·自然语言处理
实验室管理云平台1 小时前
环境检测实验室管理系统:提升效率与数据准确性的关键工具
大数据·数据库·科技
敲代码的瓦龙1 小时前
Jetpack?DataBinding!!!
android·java·开发语言·mysql·android-studio
想念是会呼吸的鱼1 小时前
MySQL 常用语法整理
sql·mysql
不正经的码狗1 小时前
MySQL 免安装教程|安装不报错
mysql