1、想統(tǒng)計(jì)今日新增客戶數(shù),昨日新增客戶數(shù),以及今日跟進(jìn)記錄數(shù)等等,數(shù)據(jù)量很大,前面用的是加1減1的方式,但經(jīng)常會(huì)出現(xiàn)誤差,怎么解決這個(gè)統(tǒng)計(jì)的問(wèn)題?難道必須用count嗎?
大數(shù)據(jù)量的統(tǒng)計(jì)最好不要直接在主庫(kù)上搞 -- 加1減1的方式不鎖表不準(zhǔn)確,鎖表影響性能,而count性能也會(huì)很差。
建議把統(tǒng)計(jì)功能獨(dú)立成一個(gè)子系統(tǒng),業(yè)務(wù)服務(wù)器通過(guò)消息隊(duì)列把新增客戶/刪除客戶的操作通知到這個(gè)統(tǒng)計(jì)子系統(tǒng)里面。
在這個(gè)子系統(tǒng)里面可以考慮使用時(shí)間序列數(shù)據(jù)庫(kù)(比如開(kāi)源的Elasticsearch)來(lái)存儲(chǔ),非常方便統(tǒng)計(jì)。即使不用專門的時(shí)間序列數(shù)據(jù)庫(kù),而直接用mysql的話,可以單獨(dú)搞個(gè)mysql數(shù)據(jù)庫(kù),這樣鎖表來(lái)加1減1,或者count都可以,反正不是主庫(kù)。
如果是自增的id可以用今天最后一個(gè)減去昨天最后一個(gè)來(lái)計(jì)算。
使用的統(tǒng)計(jì)表加1減1
使用count