暑期自学 Day 14 | 数据库 (七)- 事务
事务
- 多个操作被事务管理后,要么同时失败,要么同时成功;避免安全问题发生。
- 操作:
- 开启:start transaction;
- 结束:commit;
- 回滚:rollback;
- mysql 中 DML 默认自动提交事务
- 设置手动提交
SET @@autocommit = 0;
- 设置手动提交
事务四大特征***
- 原子性:不可分割的最小操作单位,要么同时成功,要么同时失败。
- 持久性:事务提交或回滚后,数据库会持久化保存数据。
- *隔离性:多个事务之间相互独立。– 引出数据的隔离级别
- 一致性:事务操作前后数据总量不变。
事务隔离级别
- 多个事务操作同一组数据,会引发一些问题,需要设置不同隔离级别解决问题。
- 存在的问题:
- 脏读:一个事务读到另一个事务未提交的数据。
- 不可重复读(虚读):同一个事务中,两次读取到的数据不一样。
- 幻读:一个事务操作数据表中所有记录,另一个事务添加了一条数据,则第一个事务查询不到自己的修改。
- 几个级别
- read uncommitted
- read commited: 解决脏读,Oracle 默认级别
- repeatable read:解决脏读和虚读,mySql 默认级别
- serializable:解决所有问题,相当于给操作上了锁,只有一个事务执行完成才能执行另一个事务。
- 级别和安全性由低到高,效率由高到低
- 查看事务级别:
SELECT @@tx_isolation;
- 修改事务隔离级别:
SET GLOBAL TRANSACTION ISOLATION LEVEL 级别字符串;
本作品采用《CC 协议》,转载必须注明作者和本文链接