我想做很多插入,但是可以在一段时间后更新mysql吗?
例如,如果有一个查询,例如
Update views_table SET views = views + 1 WHERE id = 12;
是否可以存储此查询,直到 View 达到 100,然后运行以下命令,而不是运行 100 次以上的查询。
Update views_table SET views = views + 100 WHERE id = 12;
现在,假设已经完成,那么数据完整性问题就来了。假设有 100 个打开的 php 文件,它们都将运行相同的查询。现在,除非存在增加缓存 View 的锁定机制,否则多个文件可能具有相同的缓存 View 值,因此假设进程 1 可能有 25 个缓存 View ,而 php 进程 2 可能有 25 个 View 和进程3 可能有 27 个文件 View 。现在假设进程 3 完成并将计数器增加到 28。然后假设 php 进程即将完成并且它在进程 3 之后完成,这意味着计数器将回到 26。
那么你们有没有既快速又保证数据安全的解决方案。
谢谢
最佳答案
只要您的查询使用相对值views=views+5
,就应该没有问题。
只有当您将值存储在脚本中的某个位置,然后自己计算新值时,您可能会遇到麻烦。但你为什么要这样做呢?实际上,你为什么要做这一切? :)
如果您不想使数据库过载,您可以使用UPDATE LOW_PRIORITY table set ...
,LOW_PRIORITY
keyword会将更新操作放入队列中,并等待该表不再被读取或插入使用。
关于php - 缓存 mysql 插入 - 保持数据完整性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5465384/