mysql中的事务
一、事务的作用
事务是指一系列将要发生的连续的操作。
事务安全是为了保证一系列操作的结果保持同步,保证数据的完整性。
开启事务后,操作的结果会先保存到事务日志中,等操作完成提交事务后,才会修改表中的数据。
注意:只有innodb存储引擎和bdb存储引擎才支持事务安全。
二、事务使用
start transaction; -- 开启事务 -- SQL语句1... savepoint sp1; -- 设置回滚点 -- SQL语句2... -- 如果操作失败 可以用rollback退回到回滚点 rollback to sp1; -- SQL语句3... -- 操作完成后,用commit提交事务 commit;
三、自动事务提交
事务是否自动提交由系统变量autocommit来控制,1为开启,0为关闭。默认是开启状态。
-- 设置自动事务提交 set autocommit := 0; -- mysql中 = 一般用于比较, := 才是赋值
四、事务的特性--ACID
A: atomic, 原子性, 整个事务的操作是一个整体,不可分割,要么全部成功,要么全部失败。
C: consistency, 一致性,事务操作前后,数据表中的数据没有变化。
I: isolation, 隔离性, 不同的事务操作是相互隔离,不受影响的。
D: durability, 持久性, 数据一旦提交, 就不会再改变。
锁机制:innodb默认是行锁, 但当事务操作的过程中,没有使用到索引,那么就会自动升级为表锁,全表检索数据。