在日常开发中,尤其是业务开发,少不了利用java对数据库进行基本的增删改查等数据操作,这也是java工程师必备技能之一,不仅仅需要对java语言框架的理解,更需要对数据库自身体系的理解。
问题:Mysql支持的事务隔离级别有哪些,以及悲观锁乐观锁的应用原理和应用场景?
事务隔离级别
所谓隔离级别,就是在数据库事务中,为保证并发数据读写的正确性而提出的定义。
每种关系型数据库都提供了各自特色的隔离级别实现,虽然在通常的定义中是以锁为实现单元,但实际实现千差万别,比如MYsql的InnoDB引擎为例,按照隔离程度从低到高,依次分为四个不同的层次:
1、读未提交,就是一个事务能够看到其他事务尚未提交的修改,这是最低级的隔离水平,允许出现脏读
2、读已提交,事务能够看到的数据都是其他事务已经提交的修改,也就是保证不会看到任何中间性状态,当然脏读也不会出现,读已提交仍然是比较低级的隔离,允许其他事务并发修改数据,允许不可重复读和幻想读出现。
3、可重复读,保证一个事务中多次读取的数据是一致的,这是Mysql InnoDB引擎的默认隔离级别。但是和一些其他数据库实现不同的是,可以简单认为Mysql在可重复读级别不会出现幻想读。
4、串行化,并发事物之间是串行化的,通常意味着读取需要获取共享读锁,更新需要获取排他写锁。这是最高的隔离级别。
网友评论