[英]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.