基本特性

事务就是要保证一组数据库操作,要么全部成功,要么全部失败。
事务在 MySQL 中是由存储引擎实现的,MySQL 是一个支持多引擎的系统,但并不是所有的引擎都支持事务。比如 MySQL 原生的 MyISAM 引擎就不支持事务,这也是 MyISAM 被 InnoDB 取代的重要原因之一。
事务的四大特性:

  1. A(Atomicity)原子性
  2. C(Consistency)一致性
  3. I(Isolation)隔离性
  4. D(Durability)持久性

    事务的使用

    事务的开启

    事务的启动方式有三种,编程者可以根据业务场景和个人喜好选择

  5. 显示启动事务语句,begin 或者 start transaction 启动;commit提交;rollback 回滚;

    1. start transaction with consistent snapshot 启动时创建一致性视图
  6. set autocommit = 0这个命令会将当前线程的事务自动提交关闭,并且你接下来的所有语句都在事务中执行,而且该事务只有你手动 commit 或者断开连接时才会提交;
  7. commit work and chain 这个命令可以手动提交上一个事务并自动启动下一个命令。

以上的三种方法推荐使用 第1、3 种,第二种方式在长连接下可能造成意外的长事务,而长事务可能会导致 undo log 过长,浪费空间,并且长事务会一直占用锁资源。

事务的查看

使用 InnoDB 引擎的数据库可以通过 information_schema 库的 innodb_trx 表查看事务

  1. select * from information_schema.innodb_trx;