簡體   English   中英

在MySQL DB中增加計數器的最快方法

[英]Quickest way to increment counter in MySQL DB

我正在VPS上運行一個論壇,運行Percona DB,使用PHP 5.5.8,Opcode緩存等,這些都是非常注重速度的。

我也在運行New Relic,(是的,我有T恤)。

在調整應用程序時,優化論壇正在對數據庫進行的查詢,以查找我消耗時間列表頂部的任何查詢。

現在,我擁有的最耗時的查詢(因為它最常用)是針對每個主題的簡單命中計數器。

因此查詢為:

UPDATE topics SET num_views = num_views + 1  WHERE id_topic = ?

我想不出一種更簡單的方法來執行此操作,或者其他各種方法中的任何一種可能更快,以及為什么。

有沒有一種方法可以更快地編寫此查詢,或者可以增加索引以提高速度?

謝謝。

假設對id_topic進行了索引,您將不會變得更好。 我唯一的建議是查看該表上的其他索引,並確保您沒有多余的num_views ,其中包括num_views 這將降低此更新的更新速度。

例如,如果您具有以下索引

  1. (some_column,num_views)
  2. (some_column,num_views,another_column)

索引#1是多余的,只會增加插入/更新的開銷

不知道這是否有所改善,但是您可以檢查以下內容:

僅對命中的每個頁面添加一行而不是鎖定和更新該行呢?

然后使用計數獲取結果並緩存它們,而不是每次都進行計數?

(也許每天壓縮一次表?)

暫無
暫無

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

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