f WEB Page Hit Count ~ 迪貝之家

Pages

WEB Page Hit Count

 

八月份的時候
為了要統計頁面的點擊率
所以AP用update 的方式來累加
結果在sql server 上造成了大量的lock
從whoisactive抓到的資料如下:
標註紅色的數字是session id
紫色的數字是被卡住的session數
藍色框框就是update + 1
當下我就問了開發人員
你到底什麼邏輯
要針對同一筆資料一直進行update作業
我就說你的邏輯應該有問題
他提出的解法就是
把每一次點擊
都以insert來處理
要看點擊率的話
就以select count(*) 來統計


MySQL 有其解決方案
表格定義如下 :
CREATE TABLE hitcount
(
path VARCHAR(255)
CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL,
hits BIGINT UNSIGNED NOT NULL,
PRIMARY KEY (path)
);

其update + 1的sql 語句
INSERT INTO hitcount (path,hits) VALUES('some path',LAST_INSERT_ID(1))
ON DUPLICATE KEY UPDATE hits = LAST_INSERT_ID(hits+1);

我在VM上測了一下
同時開了10個ssh console
下了指令去看跑的狀況
其實我也不太肯定
到底是否有效
只能看看將來專案上有沒有機會碰到來進行驗證