[英]MySQL Increase View Count Query - Very Slow
我有一个网站,每当用户查看内容时,总观看次数就会增加1 个基于会话的 。 我观察了一段时间的慢查询日志,有趣的是,此查询似乎非常慢。
这是我使用的查询;
UPDATE video_content SET views = views+1 WHERE id = 'XXX';
样本日志;
UPDATE video_content SET views = views+1 WHERE id = 'XXX';
# Time: 170123 16:49:35
# User@Host: XYXY_dbE56[XYXY_dbE56] @ localhost []
# Thread_id: 6297490 Schema: XYXY QC_hit: No
# Query_time: 3.145292 Lock_time: 0.000045 Rows_sent: 0 Rows_examined: 1
# Rows_affected: 1
SET timestamp=1485179375;
我正在使用在CentOS下运行的MariaDB最新版本。 一切都是最新的,200-400个用户是实时在线的。
我有比这同时执行的查询更重的查询,但它们很好。 有什么方法可以优化此查询?
提前致谢!
当您在一行上有多个并发更新时,可能是由于行争用。 有很多解决方法,例如
使用更快的内存数据库,例如redis
使用类似
创建表计数器(id int,count int)
当您增加视图时,您可以
update counter set count+1 where id = FLOOR(RAND()*100)
并且您可以将所有行的计数求和以获得最终的计数器值。 假设您已经预先插入了100个计数器行
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.