查看自动提交状态:
select @@autocommit;(show variables like '%autocommit%';)
显式
begin开始一个事务
rollback事务回滚
commit事务提交
隐式
set autocommit = 0; 关闭自动提交
set autocommit = 1;开启自动提交
区别:
若显式不存在回滚标识点,回滚或者提交事务即关闭事务;若存在回滚标识点 ,回滚完所有的标识点或者提交事务 即关闭事务
若隐式关闭自动提交,无论有无回滚标识点,是否回滚完标识点,提交事务,都不会关闭,只有手动将自动提交打开才会关闭
事务的四个特性:
原子性:事务的所有语句是整体
一致性:数据的完整性(约束)不被破坏
持久性:事务一旦提交,数据持久化到服务器
隔离性:事务与事务之间的
隔离级别
read uncommitted 读未提交 三种都不可避免
read committed 读已提交(oracle默认) 避免脏读
repeatable read 可重复读(mysql默认) 避免可重复读
serialiable 串行化 三种都可避免
脏读:一个事务读到了另一个事务没有提交的数据
不可重复读:相同的查询条件,每次查到的数据都不同 特指另一个事务执行了update操作
幻读:查询到的记录数不同 特指另一个事务执行了insert/delete操作
查看数据库隔离级别 select @@tx_isolation;
修改隔离级别 set session transaction isolation level 隔离级别名;