[英]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是多余的,只會增加插入/更新的開銷
不知道這是否有所改善,但是您可以檢查以下內容:
僅對命中的每個頁面添加一行而不是鎖定和更新該行呢?
然后使用計數獲取結果並緩存它們,而不是每次都進行計數?
(也許每天壓縮一次表?)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.