千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

首页 视频教程 培训课程 师资团队 技术干货 常见问题 面试题 职场就业 零基础学Java 行业资讯
【热点话题】 Java技术干货 Java学习教程 Java学习笔记 Java面试题 Java培训问答 Java培训机构哪些好 Java职场就业
当前位置:Java培训  >  java技术干货  >  Java中JDBC进阶教程之数据库的隔离级别

Java中JDBC进阶教程之数据库的隔离级别

来源:千锋教育
发布人:千锋Java
时间: 2018-09-03 16:57:00 1535965020

  对数据库而言,其明显的特征是资源可以被多个用户共享。当相同的数据库资源被多个用户(多个事务)同时访问时,如果没有采取必要的隔离措施,就会导致各种并发问题,破坏数据的完整性。

  如果不考虑隔离性,数据库将会存在三种并发问题。

  1. 脏读

  一个事务读到了另一个事务尚未提交的更改数据。例如,事务T1修改某一数据后,事务T2读取同一数据,然后事务T1由于某种原因被撤消,这时T1已修改过的数据恢复原值,T2读到的数据就与数据库中的数据不一致,其读到的数据就为"脏"数据,对该数据的操作也无法承认。

  2. 不可重复读

  不可重复读是指一个事务读取数据后,另一个事务执行更新操作,使第一个事务无法再现前一次的读取结果。例如,事务T1读取B=100进行运算,事务T2读取同一数据B,对其进行修改后将B=200写回数据库。这时,T1为了对读取值校对重读B,B已为200,与第一次读取值不一致。

  3. 幻读

  幻读是指一个事务读取数据后,另一个事务执行插入操作,使第一个事务无法再现前一次的读取结果。例如,事务T1两次统计所有账户的总金额,在这期间,事务T2插入了一条新记录,使得两次统计的总金额不一致。

  为了解决并发造成的问题,数据库规范定义了四种隔离级别,用于限定事务之间的可见性,不同事务隔离级别能够解决的数据并发问题的能力是不同的,具体如表2.1所示。

  表2.1 数据库的隔离级别

1

  read uncommitted (读未提交),一个事务读到另一个事务没有提交的数据。

  read committed (读已提交),一个事务读到另一个事务已经提交的数据。

  repeatable read (可重复读),在一个事务中读到的数据始终一致,无论别的事务是否提交。

  serializable(串行化),同时只能执行一个事务,相当于是事务中的单线程。

  以上四种隔离级别安全性最高的是serializable (串行化),最低的是read uncommitted(读未提交),当然安全性能越高,执行效率就越低。像serializable(串行化)这样的级别,就是以锁表的方式,使得其他的事务只能在锁外等待,所以平时选用何种隔离级别应该根据实际情况。MySQL数据库默认的隔离级别为repeatable read (可重复读)。

  学习java开发,可以参考千锋java培训老师提供的学习路线,该学习路线罗列了各阶段完整的java学习知识,根据千锋提供的java学习路线图,可以让你对学好java开发需要掌握的知识有个清晰的了解,并能快速入门java开发。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

猜你喜欢LIKE

最新文章NEW

相关推荐HOT

更多>>
开班信息
北京校区
  • 北京校区
  • 大连校区
  • 广州校区
  • 成都校区
  • 杭州校区
  • 长沙校区
  • 合肥校区
  • 南京校区
  • 上海校区
  • 深圳校区
  • 武汉校区
  • 郑州校区
  • 西安校区
  • 青岛校区
  • 重庆校区
  • 太原校区
  • 沈阳校区
  • 南昌校区
  • 哈尔滨校区

14天品质课程免费学

10年以上业内强师带你蜕变精英

提交领取