1、什么是事务?
一个session中,所有的操作要么成功要么失败。事务是满足ACID特性的一组操作,通过commit提交一个事务,rollback回滚一个事务。
2、事务的用法
start transaction 标记起始事点务,
savepoint 创建保留
rollback to 返回到保留点,若没有保留点,则回退到tart transaction位置
commit 提交事务
案例
start transaction;
create database test;
savepoint A;
create datbase test2;
rollback to A;
commit;
只有test数据库创建成功。
3、autocommit
MySQL 默认采用隐式提交策略( autocommit )。每执行一条语句就把这条语句当 成一个事务然后进行提交。当出现 START TRANSACTION 语句时,会关闭隐式提 交;当 COMMIT 或 ROLLBACK 语句执行后,事务会自动关闭,重新恢复隐式提交。 通过 set autocommit=0 可以取消自动提交,直到 set autocommit=1 才会提 交; autocommit 标记是针对每个连接而不是针对服务器的。
4、事务的隔离级别
未提交读(脏读)
事务中的修改,即使没有提交,对其它事务 也是可见的
提交读(不可重复读)
执行两次相同的查询,得到的结果可能 不一致。 T2 读取一个数据,T1 对该数据做了修改。如果 T2 再次读取这个数据,此时读取的 结果和第一次读取的结果不同
可重复读
保证在同一个事务中多次读取同样数据的结果 是一样的。可重复读解决了不可重复读问题。
串行化
强制事务串行执行