我目前正在开发一个网站,并且在进行数据库设计时,我对并发问题有些担心,我正在考虑使用时间戳来避免这种情况。
我对时间戳的理解是,它的工作方式如下:
假设有一个字段“ DateModified”,其中该特定行上的每次更新都会更新。
然后,只要有1个或更多用户访问该行(如先阅读然后最终对其进行更新)。
为了使时间戳生效,我需要一个条件,该条件应像我的代码一样首先读取“ DateModified”。
readdatemodified =从交易选择DateModified,其中ID =?
datemodified =从交易中选择DateModified,其中ID =?
如果已修改日期==已修改日期
UPDATE交易ID =?
其他
消息“有人更新了记录。请重试”。
如果:成功更新记录
ELSE:在这里,将通过访问数据库再次检索记录,以确保该记录是更新的记录。
我在这里解决了并发问题,但是我的新问题是如何访问数据库。
我每次更新都会多次访问数据库吗?
有没有一种方法可以使用时间戳最小化数据库访问?
最佳答案
如果要并发/检查应用程序逻辑,请尝试CAS(检查并设置)算法,如果不希望发生并发更改,请使用事务(如Acyclic Tau所述)
关于php - 时间戳混淆:并发问题的解决方案,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19591190/