💡
原文英文,约800词,阅读约需3分钟。
📝
内容提要
当应用程序频繁更新计数器时,会遇到性能问题和死锁。通过将计数器分散到多行中,可以减少锁定概率。使用随机数将计数器插入到不同行中,以实现并行更新。
🎯
关键要点
- 频繁更新计数器会导致性能问题和死锁。
- 每次更新行时,数据库会锁定该行,导致无法并行更新。
- 通过将计数器分散到多行中,可以减少锁定概率。
- 使用随机数将计数器插入到不同行中,以实现并行更新。
- 创建新的表来存储多个计数器,并使用 fanout 列分配锁定。
- 定期将 pageviews_counts 表中的汇总计数移动到 pageviews 表中。
- 可以通过增加 fanout 来进一步减少锁定概率。
- 使用事务和查询未被锁定的行来合作数据库锁定系统。
- Redis 服务器可以作为替代方案,处理大量增量更新。
➡️