自己简单的复习一下一些知识点,工作中有遇到的知识点,理论知识偏多,有什么不对的,欢迎一起交流
ACID
原子性(atomic)事务的整体性,不可再分割性,要么都成功,要么都失败
一致性(consistency )操作前后的结果、状态一致,例如:互相转账的两个账户,转账前后的总额不会发生改变
隔离性(isolation )并发的情况下,事务之间互不影响,互不干扰
持久性(durability)事务提交后,把数据持久到库,之后即使突然异常关闭,也可以恢复之前的数据
数据库的隔离级别主要是 防止事务的并发读
有几种并发读,脏读,幻读,不可重复读
脏读:一个事务读取到另一个事务未提交的数据
幻读:连续两次读取同一张表的结果不一致,因为另一个事务对表进行了insert操作
不可重复读:不可以重复读取同一条记录,重复读取同一条记录两次可能结果不一致,因为另一事务对记录进行了update操作
隔离级别:
串行化(Serializable):所有的事务排队执行,不会发生脏读,幻读,不可重复读问题,效率最低
可重复读(Repeatable Read):a事物开始读取数据时会先加行级共享锁,只到事物结束才释放,不允许其他事物修改操作,可防止脏读,不可重复读问题,
读已提交(Read committed):读取已经提交的事务,可以防止脏读问题
读未提交(Read UnCommitted):读取没有提交的数据,效率最高,但问题最多
MySQL的默认隔离级别是可重复读,Oracle的默认隔离级别是读已提交