MySQL——事务

发布时间 2023-09-15 22:29:55作者: 上瘾了

是什么

必须被原子地执行的一个或多个数据库操作的集合,事务用于保证数据的一致性。如:转账就要用事务来处理,用以保证数据的一致性。

当执行事务操作时,mysql会在表上加锁,防止其他操作对表进行修改。

事务的特性ACID

原子性Atomicity

一致性Consistency

隔离性Isolation

持久性Durability

事务操作

-- 开始事务
START TRANSACTION
-- 设置保存点
SAVEPOINT a
-- dml操作
SAVEPOINT b
-- dml操作
ROLLBACK TO b
-- 回退全部事务
ROLLBACK
-- 确认事务变化、结束事务、删除保存点、释放锁
COMMIT

使用commit语句结束事务后,其他连接将可以查看到事务变化后的新数据。(隔离级别)

细节:

1、不开启事务,DML操作是自动提交的,不能回滚。

2、开启事务,没有创建保存点,执行rollback直接回退到事务开始的状态。

3、mysql的事务机制需要InnoDB的存储引擎才可以使用,MyISAM不好使。

4、开始一个事务start transaction或set autocommit=off。

隔离级别

事务隔离,保证各个连接在获取数据时的准确性。

加锁,发现有事务在操作同一数据表,则当前事务的SQL语句执行会卡住等待。

脏读

一个事务读取另一个事务尚未提交的增删改过的数据。

不可重复读

事务在操作过程中进行两次查询,由于另外一个事务对该行数据进行了修改或删除并提交,得到了不同的结果。

幻读

事务在操作过程中进行两次查询,由于另外一个事务提交了插入操作,得到了不同的结果。