我想開始計算瀏覽網頁的次數,因此需要某種簡單的計數器。什麼是最好的可擴展的方法呢?什麼是在MySQL中實現計數器字段的最佳方式
假設我有,每一行對應一個頁表Frobs - 一些明顯的選項是:
在Frobs表,得到 使用
UPDATE Frobs SET NumViews = NumViews + 1
每個視圖時更新有一個unsigned int NumViews場 。簡單但不是很好,因爲我瞭解它。有一個單獨的表FrobViews 其中爲每個視圖插入一個新行。要顯示 的視圖數量,則需要執行一個簡單的
SELECT COUNT(*) AS NumViews FROM FrobViews WHERE FrobId = '%d' GROUP BY FrobId
。這不涉及任何更新,因此可以避免MyISAM表中的表鎖定 - 但是,如果要顯示每個頁面上的視圖數,讀取性能將受到影響。
你是如何做到的?
這裏有一些很好的建議: http://www.mysqlperformanceblog.com/2007/07/01/implementing-efficient-counters-with-mysql/ 但我希望聽到SO社區的意見。
我目前使用InnoDb,但對InnoDb和MyISAM的答案感興趣。