隨著時間的增加,訂單表裡的數據會越來越多,就需要對一個月或第一季甚至近一年的數據做分析統計,像退款率,支付率,以及訂單關聯的產品等的相關參數,但是這樣一次即時計算帶來的後果要不是超時,就是記憶體溢出,求這樣問題用php的解決方案。
隨著時間的增加,訂單表裡的數據會越來越多,就需要對一個月或第一季甚至近一年的數據做分析統計,像退款率,支付率,以及訂單關聯的產品等的相關參數,但是這樣一次即時計算帶來的後果要不是超時,就是記憶體溢出,求這樣問題用php的解決方案。
對於當天之前的數據,可以每天定時收集處理,存儲到數據庫中,空間換時間,這樣的話實時數據也只是需要查當天的,效率會高很多,對服務器的壓力這會大大降低,還可以做一下緩存,防止用戶頻繁刷新帶來的壓力
這個問題很寬泛並且本質上和語言沒有關係, 但大體來說可以先從這兩點著手
設立一個離線庫, 你的查詢去離線庫查, 不要去主庫上去查詢(是通過導出數據還是做主從取決於你們的具體情況)
對於某些經常需要的數據, 設計一個或多個數據分析的表, 按照你需求的維度隔固定時間跑一次, 歷史數據只要一開始跑完就好, 後面你只需要跑新產生的數據進行分析即可
更進一步的需要引入一些其它工具(比如ES, Hadoop等等), 甚至包括重新設計你們數據分析相關的產品的形態
可以建立一個匯總表,定時將統計到的信息寫進匯總表中,後邊就直接查詢匯總表了,反正統計信息是月或者季度的形式呢
用cli模式跑腳本,不要fpm
循環中使用yield關鍵字,不產生額外中間變數