什么是mysql事务_mysql事务基本概念

18次阅读

mysql事务是InnoDB引擎支持的ACID特性操作单元,需显式开启并提交,确保数据一致性,但不保证业务逻辑正确且受长事务和跨库限制。

什么是mysql事务_mysql事务基本概念

MySQL事务是一组逻辑上关联的SQL操作,作为一个不可分割的整体来执行。它的核心目标是确保数据在并发环境下的完整性与一致性——要么全部成功,要么全部失败,不存在中间状态。

事务必须满足ACID四大特性

原子性(Atomicity):事务是最小执行单元,内部所有操作不可拆分。比如转账时扣款和入账必须同时生效或同时撤销,不能只完成一半。

一致性(Consistency):事务前后,数据库始终处于合法状态。例如A、B账户总余额在转账前后必须保持不变,这是由业务规则定义的“一致”。

隔离性(Isolation):多个事务并发执行时互不干扰。MySQL通过隔离级别控制可见性,避免脏读、不可重复读和幻读等问题。

持久性(Durability):一旦事务提交,修改就永久保存到磁盘,即使系统崩溃也不会丢失。

事务依赖InnoDB存储引擎

MySQL默认的MyISAM引擎不支持事务,只有InnoDB引擎完整支持ACID特性。可通过SHOW ENGINES命令确认当前引擎是否支持transaction。

建表时需显式指定:
CREATE table t1 (…) ENGINE=InnoDB;

事务的基本操作流程

MySQL默认开启自动提交(autocommit=1),每条sql语句单独成一个事务。如需多语句协同,需手动控制:

  • START TRANSACTIONBEGIN显式开启事务
  • 执行一组相关DML语句(如UPDATE、INSERT、delete
  • 全部成功则执行COMMIT提交;任一出错可执行ROLLBACK回滚到初始状态
  • 也可用SAVEPOINT设置中间保存点,实现部分回滚

事务不是万能的,有使用前提

事务无法解决所有问题:

  • 它不保证业务逻辑正确(比如转错人、输错金额),只保证SQL执行层面的原子与一致
  • 长事务会占用锁资源、影响并发性能,应尽量缩短执行时间
  • DDL语句(如ALTER TABLE)在多数版本中会隐式提交当前事务,需注意顺序
  • 跨库、跨服务的操作超出单机事务能力,需借助分布式事务方案
text=ZqhQzanResources