高性能mysql(四)緩存表和計數器表

緩存表(彙總表)

假如統計一個網站23小時發出的消息數,在一個比較忙碌的網站下不可能隨時維護一個精準的計數器。代替方案是每小時生成一張彙總表,這樣比實時計算要高效的多。

簡單的說就是維護一些複雜 耗時的計算 那麼用匯總表是比較好的選擇。

計數器表

要計數我們可以創建一個計數器表。

create table hit_counter(cnt int unsigend not null)engine=innodb;

每次網站有點擊就進行更新

update hit_counter set cnt = cnt + 1;

缺點 每次進行更新都會鎖表,那麼會有很多的等待。

爲了提高性能可以把計數保存在多行中

create table hit_counter(slot tinyint unsigned nut null primary key,cnt int unsigned not null)engine = innodb;

更新數據時可以這樣:

update hit_counter set cnt = cnt + 1 where slot = RAND() * 100;

獲取數據

select sum(cnt) from hit_counter;

更快的讀,更慢的寫

爲了挺高查詢速度,有時候需要一些額外的索引,冗餘,彙總表等,這樣數據的寫入會更慢一些,但是數據的讀取會更快一些,這也是常用的優化手段。
發佈了105 篇原創文章 · 獲贊 30 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章