我目前正在开发一个网站,并且在进行数据库设计时,我对并发问题有些担心,我正在考虑使用时间戳来避免这种情况。

我对时间戳的理解是,它的工作方式如下:


假设有一个字段“ DateModified”,其中该特定行上的每次更新都会更新。
然后,只要有1个或更多用户访问该行(如先阅读然后最终对其进行更新)。
为了使时间戳生效,我需要一个条件,该条件应像我的代码一样首先读取“ DateModified”。


readdatemodified =从交易选择DateModified,其中ID =?

datemodified =从交易中选择DateModified,其中ID =?

如果已修改日期==已修改日期
UPDATE交易ID =?
其他
消息“有人更新了记录。请重试”。

如果:成功更新记录

ELSE:在这里,将通过访问数据库再次检索记录,以确保该记录是更新的记录。

我在这里解决了并发问题,但是我的新问题是如何访问数据库。
我每次更新都会多次访问数据库吗?

有没有一种方法可以使用时间戳最小化数据库访问?

最佳答案

如果要并发/检查应用程序逻辑,请尝试CAS(检查并设置)算法,如果不希望发生并发更改,请使用事务(如Acyclic Tau所述)

关于php - 时间戳混淆:并发问题的解决方案,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19591190/

10-16 14:08