gpt4 book ai didi

mysql - mysql 中列值的增量更新。并发问题?

转载 作者:行者123 更新时间:2023-11-29 07:35:04 26 4
gpt4 key购买 nike

我有一个类似的查询

update pageviews set count = count + 1 where pageid = $pageid

每次浏览网页时都会执行该语句。因此,每次查看页面时列数都会增加。

我的表是InnoDB类型。

假设每秒可以发生数千次页面浏览,这是否不可扩展?我会遇到并发问题吗?比如查询锁定等?

有人告诉我,我应该使用队列来达到这样的目的。为什么我需要使用队列?在什么情况下我的数据可能会被损坏或者可扩展性可能会成为问题?

最佳答案

在商用硬件上,InnoDB 开箱即用,每秒处理大约 100 个此类语句。不存在并发或锁定问题,只是性能问题。

  • innodb_flush_log_at_trx_commit 为了安全起见,默认值为 1。但这需要为每个事务对日志进行磁盘 I/O。 2 更快,并且是合理的折衷。 (崩溃可能会丢失一秒钟的交易。)

  • 您的UPDATE可能是自动提交?还是单独交易?可以以任何方式批处理吗?如果是这样,那就会减少开销。

  • 综合浏览量由网络服务器处理,对吗?它可以在实际写入表之前收集一些 pageid 吗?即使它收集了一秒钟,这也可能是一个显着的加速。如果您这样做,请务必对 update pageviews set count = count + 1 where pageid IN (...) 中的 IN 列表进行排序。这将减少出现僵局的可能性。

  • 处理UPDATE中的错误。 (否则,您的数据将“错误”或“损坏”。)

关于mysql - mysql 中列值的增量更新。并发问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31099589/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com