##事务
最好的案列就是银行转账,要么转账成功,要么失败。
1.事务的基本介绍
1.概念:
如果一个包含多个步骤的业务操作,被事务管理,那么这些操作要么同时成功,要么同时失败。
2.操作
1.开启事务:start transaction
2.回滚:rollback
3.提交:commit;
3.Mysql数据库中事务默认提交
*事务提交的两种方式:
自动提交:
*Mysql就是自动提交的
*一条DML(增删改)语句会自动提交一次事务
手动提交:
*oracle 数据库默认是手动提交事务
*需要先开启事务,再提交
* 修改事务的默认提交方式:
*查看事务的默认提交方式:select @@autocommit;
-- 1 代表自动提交 0 代表手动提交
*修改默认提交方式:set @@autocommit = 0;
2.事务的四大特征
1.原子性:是不可分割的最小操作单位,要么同时成功,要么同时失败
2.持久性:当事务提交或回滚后,数据库会持久化的保存数据
3.隔离性:多个事务之间。相互独立。
4.一致性:事务操作前后数据总量不变。
3.事务的隔离级别(了解)
1.read_uncommitted(读未提交)
可读取未提交事务的操作数据,最低的隔离级别,一般都没有用的。这种情况会出现脏读。
2.read_committed(读已提交)
一个事务等另一个事务提交之后才可进行读取,解决了脏读问题,但会出现不可重复读
3.repeatable_read(可重复读)
读取事务开启的时候不能对数据进行修改,解决了不可重复读问题,但是存在幻读问题;
4.serializable(序列化)
是最高的事务隔离级别,可以避免脏读、不可重复读与幻读。但是这种事务隔离级别效率低下,比较耗数据库性能,一般不使用;