一般的数据库包括四种事务隔离级别:
- 读未提交
- 读提交
- 可重复读
- 串行化
1、读未提交
读未提交就是可以读到未提交的内容。
在这种隔离下,查询是不加锁的,也是因为查询不加锁,所以这种隔离级别的一致性最差,会产生“脏读”、“不可重复读”等
2、读提交
读提交就是已经读到了已经提交的内容。
这是最常用的隔离级别,这种隔离级别可以有效的避免读未提交产生的“脏读”问题,但是在读提交中的查询中也是没有加锁的,但是为什么能够避免”脏读“呢,这是另一种机制”快照“,这是一种能保证一致性又不加锁的读。
3、可重复读
可重复读是为了”不可重复读“设定的一种隔离级别,这是一种mysql的默认隔离级别。
在可重复读中,查询依然使用”快照“,但是在事务启动时,就不允许修改操作了。可重复读避免了不可重复读,但是没法避免幻读,因为幻读是由于查询或删除操作引起的。
4、串行化
这是事务隔离级别的最高级,在这个级别下,事务是按照串行化顺序执行,需要一个一个的执行,执行完一个才会执行下一个。串行化能有效避免各种问题,但是执行效率很低,性能开销最大。