A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

在数据库中,不加控制的并发存取会产生哪些错误?这是关于数据库事务的处理!

2 个回复

倒序浏览
数据库的并发操作可能产生的问题有三种:

1.丢失更新:
两个事务T1和T2读入同一数据并修改,T2提交的结果破坏了T1提交的结果,导致T1的修改被丢失。

2.读值不可重现:
读值不可重现是指事务T1读取数据后,事务T2执行更新操作,使T1无法再现前一次读取结果。具体地讲,读值不可重现包括三种情况:
      a、事务T1读取某一数据后,事务T2对其做了修改,当事务1再次读该数据时,得到与前一次不同的值。例如,T1读取B=100进行运算,T2读取同一数据B,对其进行修改后将B=200写回   数据库。T1为了对读取值校对重读B,B已为200,与第一次读取值不一致。
      b、事务T1按一定条件从数据库中读取了某些数据记录后,事务T2删除了其中部分记录,当T1再次按相同条件读取数据时,发现某些记录神密地消失了。
      c、事务T1按一定条件从数据库中读取某些数据记录后,事务T2插入了一些记录,当T1再次按相同条件读取数据时,发现多了一些记录。

3.读脏数据:
读"脏"数据是指事务T1修改某一数据,并将其写回磁盘,事务T2读取同一数据后,T1由于某种原因被撤消,这时T1已修改过的数据恢复原值,T2读到的数据就与数据库中的数据不一致,则T2读到的数据就为"脏"数据,即不正确的数据。
回复 使用道具 举报
并发性(concurrency)问题会引发竞争状态(race conduction),可能引发数据的损毁,使用同步化synchronized这个关键词来修饰方法使它每次只能被单一的线程存取。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马