什么是事务:
对数据库的一系列操作,如果属于同一个事务,那么这些操作要么同时成功要么同时失败
事务的特性:
原子性:事务是不可分割的,要么同时成功要么同时失败
持久性:数据一旦回滚或者提交,那么就将永久保存在硬盘上
隔离性:事务之间相互独立,互不影响
一致性:事务操作的前后,数据总量不变
不考虑隔离性会产生的问题:
脏读:可以读到其他事务未提交的数据
虚读:同一个事务多次读取,数据不一致
幻读:有一个事务进行整表操作时,其他事务插入一个数据,之前事务会查不到自己的改变
隔离级别:
read uncommited:读未提交,不能解决任何问题
read committed:读已提交,可以解决脏读(Oracle默认)
repeatable read:可重复读,可以解决脏读,虚读(Mysql默认)
serializable:串行化,可以解决所有问题,但是效率低