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,简单便捷


nat123映射怎么用?超详细步骤,外网访问内网轻松搞定
nat123域名怎么用?两种方式轻松搞定
nat123怎么用?简单几步实现内网穿透
内网穿透工具对比:nat123、花生壳与轻量新选择
远程访问内网很简单:用对工具,一“箭”穿透
ngrok下载完全指南:从入门到获取客户端
内网远程桌面软件:穿透局域网边界的数字窗口
从外网远程访问内网服务器的完整方案
Windows Server 2008端口转发完全教程:netsh命令添加/查看/删除/重置
为什么三层交换机转发比Linux服务器快?转发表硬件加速的秘密