簡體   English   中英

MySQL增加查看計數查詢-非常慢

[英]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個計數器行

根據您提供的信息很難說。

  1. 嘗試獲取更多信息查詢發生了什么。 這可以通過EXPLAIN完成

查詢緩慢的原因有很多。 這取決於表的結構,數據庫的內存,磁盤的速度(1秒內有多少個I / O)等。

如果執行更復雜的查詢,則表結構可能會出現問題。 解決方案可能是只為計數創建單獨的表。

您也可以使用iostat監視CPU統計信息和輸入/輸出統計信息。

編輯:經過一段時間后,我意識到我可以更詳細地表結構。 一列索引和多列索引。 可能有問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM