php - 缓存 mysql 插入 - 保持数据完整性

标签 php mysql caching insert bulk

我想做很多插入,但是可以在一段时间后更新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/

相关文章:

python - memcached 中的 Scrapy http 缓存存储

grails - Grails-存储缓存的位置

php - 如何获得多字节字符的确切数量?

php - 如何使用 curl 将文件上传到目标目录?

javascript - 远程提交表单,本地确认

c# - 不正确的字符串值 : '\xD8\xA7\xD9\x84\xD8\xB9...' for column 'DisplayName' at row 1

php - 加载后对 Magento 集合进行排序

mysql - 在 hive/mysql 中实现 sum_reverse() [Explode table result]

php - Ajax 图像上传,其中图像获取添加到文件名的日期时间戳,并通过 MYSQL 插入图像标题

java - @Cacheable 不拦截方法,缓存永远为空