数据库并发问题详述,第1张

数据库并发问题详述,第2张

背景和特点:
我们在使用多用户数据库时,经常会遇到数据更新失败和删除丢失的情况。如果有多个用户同时访问一个数据库,当他们的事务同时使用相同的数据时,可能会出现并发问题。

并发问题包括:

1.更新丢失或被覆盖。(幻影阅读)

2.未经证实的相关性(污读)。

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

详细描述:


1。丢失更新
当两个或多个事务选择同一行,然后根据最初选择的值更新该行时,就会出现丢失更新的问题。每个事务都不知道其他事务的存在。的最后更新将覆盖其他公司所做的更新,这将导致数据丢失。

例如,两名编辑制作了同一文档的电子副本。每个编辑独立地修改他的副本,然后保存修改后的副本,从而覆盖原始文档。最后一个保存其更改副本的编辑覆盖了第一个编辑所做的更改。如果第二个编辑器可以在第一个编辑器完成后进行更改,就可以避免这个问题。

2.未确认依赖(脏读)
当第二个事务选择被其他事务更新的行时,会出现未确认依赖问题。第二个事务正在读取的数据尚未得到确认,可能会被更新此行的事务更改。

例如,一个编辑正在修改一个电子文档。在更改过程中,另一个编辑复制了文档(该副本包含了到目前为止所做的所有更改)并将其分发给目标用户。之后,第一个编辑认为当前的更改是错误的,所以他删除了编辑并保存了文档。分发给用户的文档包含不再存在的编辑,这些编辑应被视为从未存在过。如果在第一个编辑确定最终更改之前,没有人可以阅读更改后的文档,则可以避免这个问题。

3.不一致分析(非重复读取)
第二个事务多次访问同一行,每次读取不同的数据,就会出现不一致分析问题。不一致分析类似于未确认关联,因为其他事务也在更改第二个事务正在读取的数据。但是,在不一致分析中,第二个事务读取的数据是由已更改的事务提交的。而且不一致分析涉及多次(两次以上)读取同一行,每次信息都被其他事务改变;因此,不会重复读取该行。

例如,一个编辑读了同一个文档两次,但是在这两次之间,作者重写了文档。当编辑第二次阅读该文档时,该文档已被更改。原文阅读不可重复。如果编辑只能在作者写完之后才能阅读文档,就可以避免这个问题。

4.幻像读取
当对属于事务正在读取的行范围的行执行插入或删除操作时,会出现幻像读取问题。事务的第一次读取中的行范围表明,其中一行在第二次读取或后续读取中不再存在,因为它已被其他事务删除。类似地,由于其他事务的插入操作,事务的第二次或后续读取显示某行不再存在于原始读取中。

例如,编辑更改了作者提交的文档,但是当制作部门将其更改合并到文档的主副本中时,发现作者在文档中添加了新的未编辑材料。如果在编辑和制作部门完成对原始文档的处理之前,没有人能够向文档中添加新材料,则可以避免这个问题。
-。
锁定:锁定一条记录或一个表,为当前操作对象增加一个状态位,
以便其他用户可以判断是否获得编辑权限。
事务:是为了保证一套操作的完整性。(要么全部成功,要么全部失败)

- .
2。申请写权限,即锁定对象(表或记录)。
3。如果失败,请结束事务,稍后再试。
4。如果成功,即成功锁定对象,防止其他用户以同样的方式打开。
5。编辑。
6。写出编辑结果。
7。如果写入成功,事务将被提交,操作将完成。
8。如果写入失败,事务将回滚,提交将被取消。
9。(7.8)两步操作已经释放了锁定的对象,并返回到操作之前的状态。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 数据库并发问题详述

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情