数据库并发问题详述

文章作者 100test 发表时间 2007:03:14 13:37:54
来源 100Test.Com百考试题网


问题背景及特点:

我们在使用多用户数据库时常常会碰到数据更新失败、删除失等情况,如果有多个用户且同时访问一个数据库则当他们的事务同时使用相同的数据时可能会发生并发问题。

并发问题包括:

1.丢失或覆盖更新。(幻像读)

2.未确认的相关性(脏读)。

3.不一致的分析(非重复读)。

详细描述:

1.丢失更新

当两个或多个事务选择同一行,然后基于最初选定的值更新该行时,会发生丢失更新问题。每个事务都不知道其它事务的存在。最后的更新将重写由其它事务所做的更新,这将导致数据丢失。

例如,两个编辑人员制作了同一文档的电子复本。每个编辑人员独立地更改其复本,然后保存更改后的复本,这样就覆盖了原始文档。最后保存其更改复本的编辑人员覆盖了第一个编辑人员所做的更改。如果在第一个编辑人员完成之后第二个编辑人员才能进行更改,则可以避免该问题。

2.未确认的相关性(脏读)

当第二个事务选择其它事务正在更新的行时,会发生未确认的相关性问题。第二个事务正在读取的数据还没有确认并且可能由更新此行的事务所更改。

例如,一个编辑人员正在更改电子文档。在更改过程中,另一个编辑人员复制了该文档(该复本包含到目前为止所做的全部更改)并将其分发给预期的用户。此后,第一个编辑人员认为目前所做的更改是错误的,于是删除了所做的编辑并保存了文档。分发给用户的文档包含不再存在的编辑内容,并且这些编辑内容应认为从未存在过。如果在第一个编辑人员确定最终更改前任何人都不能读取更改的文档,则可以避免该问题。


相关文章


Oracle用户——我渴望开源数据库
2006年辅导之Sybase和Oracle的互相导入
2006年辅导之Windows安装Oracle出现错误
Oracle埃里森冀望改写软件销售模式
数据库并发问题详述
OracleCEO:可能会开发自己的Linux系统
Oracle6月已经加入Grails开源计划
存储过程编写经验和优化措施
数据库主键设计之思考
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛