首頁  >  文章  >  後端開發  >  資料量比較大 如何更好的實現統計功能?

資料量比較大 如何更好的實現統計功能?

PHP中文网
PHP中文网原創
2017-03-30 13:27:303077瀏覽

資料量比較大的情況下如何統計總數?

例如一個表裡面有500萬條數據,傳統的方式是count(),這樣效率很低。

網路上有人說用mysql的觸發器,把統計結果插入到一個結果表裡。

還有其他方法嗎?例如非同步執行的方式插入到一個mysql的結果表裡可以嗎?

或統計結果放入redis可以嗎?

還有說用定時執行的,但是我們這個使用場景要求即時計算總和。

資料量比較大的情況下如何統計總數?

例如一個表裡面有500萬條數據,傳統的方式是count(),這樣效率很低。

1.網路上有人說用mysql的觸發器,把統計結果插入到一個結果表裡。

還有其他方法嗎?例如非同步執行的方式插入到一個mysql的結果表裡可以嗎?

2.或是統計結果放入redis可以嗎?

還有說用定時執行的,但是我們這個使用場景要求即時計算總和。

3.可以新建一個表用來保存行數資訊
  表名(主鍵)|資料量

觸發器的時候如果插入數據,則對應表的資料量+1,如果刪除資料則減1。

4 .還有一種方案就是每次只計算1分鐘的增量(根據你們業務對實時性的要求),上一次的統計值加上1分鐘的增量就是現在的總數。當然這要看有沒有對舊資料進行刪除的操作。我得這種方法跟著透過向表裡插入統計統計結果會有耦合。

我時傾向於用redis來儲存,insert+1,delete-1。 db沒有什麼壓力,同時降低了耦合

用memcache或redis記數就可以了。
需要查count的時候先查memcache,如果沒有的話就去資料庫count,然後在設定上memcache,下次查memcache就有了,就不用去count了。

以上就是資料量比較大 如何更好的實現統計功能?的內容,更多相關內容請關注PHP中文網(www.php.cn)!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn