mysql事务,不可分割的 SQL 操作序列

首页 2025-09-11 16:31:37


MySQL 事务是一组不可分割的 SQL 操作序列,要么全部执行成功,要么全部失败回滚,确保数据一致性。

核心特性(ACID)

  • 原子性(Atomicity):事务中所有操作要么全成,要么全败
  • 一致性(Consistency):事务执行前后数据状态合法(符合业务规则)
  • 隔离性(Isolation):多个事务并发执行时互不干扰
  • 持久性(Durability):事务提交后,修改永久保存

基本操作

sql
-- 1. 开启事务(默认自动提交关闭)
START TRANSACTION;
-- 或 BEGIN;

-- 2. 执行SQL操作(增删改)
INSERT INTO orders ...;
UPDATE inventory ...;

-- 3. 提交事务(所有操作生效)
COMMIT;

-- 3. 或回滚事务(所有操作撤销)
ROLLBACK;
 

事务隔离级别(由低到高)

  1. 读未提交(Read Uncommitted)
    可能读取到其他事务未提交的数据(脏读)
  2. 读已提交(Read Committed)
    只能读取已提交数据(解决脏读,可能出现不可重复读)
    MySQL 大多数版本默认级别
  3. 可重复读(Repeatable Read)
    事务中多次读取数据一致(解决不可重复读,可能出现幻读)
    MySQL InnoDB 默认级别
  4. 串行化(Serializable)
    完全串行执行,无并发问题(性能最低)

隔离级别设置

sql
-- 查看当前隔离级别
SELECT @@transaction_isolation;

-- 设置隔离级别(会话级)
SET TRANSACTION ISOLATION LEVEL 级别名称;
-- 例如:SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
 

注意事项

  • 仅 InnoDB 引擎支持事务,MyISAM 不支持
  • 长时间未提交的事务会导致锁表,影响性能
  • 复杂事务建议拆分,避免锁定资源过久
  • 使用 SAVEPOINT 可实现部分回滚:
    sql
    SAVEPOINT sp1; -- 创建保存点
    ROLLBACK TO sp1; -- 回滚到保存点

以上就是关于mysql事务的介绍。还有一款非常便捷的MYSQL导出、导入备份工具也运用的很不错,“80KM-mysql备份工具”。 可定时备份、异地备份,MYSQL导出导入。可本地连接LINUX里的MYSQL,简单便捷


MySQL连接就这么简单!本地远程、编程语言连接方法一网打尽
还在为MySQL日期计算头疼?这份加一天操作指南能解决90%问题
MySQL日志到底在哪里?Linux/Windows/macOS全平台查找方法在此
MySQL数据库管理工具全景评测:从Workbench到DBeaver的技术选型指南
MySQL密码忘了怎么办?这份重置指南能救急,Windows/Linux/Mac都适用
你的MySQL为什么经常卡死?可能是锁表在作怪!快速排查方法在此
MySQL单表卡爆怎么办?从策略到实战,一文掌握「分表」救命技巧
清空MySQL数据表千万别用错!DELETE和TRUNCATE这个区别可能导致重大事故
你的MySQL中文排序一团糟?记住这几点,轻松实现准确拼音排序!
别再混淆Hive和MySQL了!读懂它们的天壤之别,才算摸到大数据的门道