是什么
必须被原子地执行的一个或多个数据库操作的集合,事务用于保证数据的一致性。如:转账就要用事务来处理,用以保证数据的一致性。
当执行事务操作时,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语句执行会卡住等待。
脏读
一个事务读取另一个事务尚未提交的增删改过的数据。
不可重复读
事务在操作过程中进行两次查询,由于另外一个事务对该行数据进行了修改或删除并提交,得到了不同的结果。
幻读
事务在操作过程中进行两次查询,由于另外一个事务提交了插入操作,得到了不同的结果。
标签:事务,加锁,隔离,--,提交,MySQL,操作 From: https://www.cnblogs.com/fallorange/p/17706053.html