事务四大特性
1. 原子性:
事务要么全部执行,要么全部不执行
2. 一致性:
数据库数据保持我们提前约束好的正确状态范围,如果不正确就会回滚,事务的执行前后数据必须都是保持在正确的状态
3. 隔离性:
理论上事务与事务之间完全隔离互不干扰,也就是说事务正确提交前不允许将数据的任何改变提交给其他事务
4. 持久性:
事务执行完成,正确提交后,数据的改动会永久保存,就算有其他重大故障数据也会被保存
四种隔离级别
1. 读未提交:
所有事务都可以读到其他事务未提交的数据,产生脏读问题,安全性太差
2. 读已提交:
事务只能读到其他事务已经提交的数据,避免了脏读,会出现不可重复读和虚读问题
3. 可重复读:
mysql的默认级别,事务并发读取时读到的数据是一样的,会出现幻读问题(也就是范围查询时,其他事务在此范围插入了新数据,接着读取读到了本不存在的新插入的数据)mysql通过innoDB和falcon存储引擎解决了幻读问题
4. 可串行化:
最高级别,在每行上加上共享锁,每个事务只能排队来读取,解决了幻读问题,吞吐量降低,会因锁竞争出现超时的问题