1.查看/设置事务提交方式
select @@commit;
--0手动提交,1自动提交
set @@commit = 0;
2.开始事务
start transaction;
3.提交事务
commit;
4.回滚事务
rollback;
5.事务的四大特性ACID
- A原子性(Atomicity):事务是不可分割的最小单元,要么全部成功,要么全部失败。
- C一致性(Consistency):事务完成时,必须让所有的数据保持一致的状态。
- I隔离性(Isolation):数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行。
- D持久性(Durability):事务一旦提交或者回滚,对于数据库中数据的改变是永久的。
6.并发事务引发的问题
- 脏读:一个事务读到另一个事务还没有提交的数据。
- 幻读:一个事务按照条件查询数据时,没有对应的数据行,但插入时又发现这条数据已经存在,类似于出现了“幻影”一样。
- 不可重复读:一个事务先后两次读取同一条记录,但两次读到的数据不同。
7.事务的隔离级别
事务隔离级别越高,数据越安全,但性能越低。
隔离级别 | 脏读 | 不可重复读 | 幻读 |
---|---|---|---|
读未提交 | √ | √ | √ |
读已提交 | × | √ | √ |
可重复读(默认) | × | × | √ |
串行化 | × | × | × |
--查看事务的隔离级别
select @@transaction_isolation;
--设置事务隔离级别
--session 会话级,仅对当前窗口有效
--global 所有会话端有效
set [session/global] transaction isolation level [read uncmmited/read commited/repeatable read/serializable];