MySQL事务:
事务:
一组原子性的sql查询,或者说是一个独立的工作单元
ACID测试:
A:atomicity,原子性:整个事务的所有操作要么全部执行成功,要么全部失败后回滚
C:consistency,一致性:数据库总是从一个一致性的状态转换成另一个一致性的状态
I:Isolation,隔离性:一个事务在提交之前,不能被其他事务所见,隔离有多种级别
D:durability,持久性:一旦事务提交,所做的修改就会永久保存于数据库中
启动事务
START TRANSACTION;
结束事务
ROLLBACK; 回滚
COMMIT; 提交
只有事务型的存储引擎才支持上述操作,比如( InnoDB )
建议在使用innodb是关闭自动提交
SET autocommit=OFF;
事务支持SAVEPOINT
SAVEPOINT Identifier 设定一个保存点
ROLLBACK TO [SAVEPOINT] Identifier 返回至某个保存点
事务的隔离级别
相关的mysql参数
tx_islation 默认为REPEATABLE-READ
可以修改
# SET tx_isolation='READ-UNCOMMITTED';
READ-UNCOMMITTED(读未提交)
会导致脏读、不可重复读、幻读
READ-COMMITTED(读提交)
解决了脏读问题,但是未解决幻读和不可重复读
REPEATABLE-READ(可重复度)
解决了脏读和不可重复读,未解决幻读
SERIALIZABLE(串行化)
解决了脏读、幻读、不可重复读,但是引来了加锁读