首頁  >  文章  >  後端開發  >  一分鐘多進程百萬資料匯出到csv並上傳到oss

一分鐘多進程百萬資料匯出到csv並上傳到oss

藏色散人
藏色散人轉載
2023-04-20 15:30:511594瀏覽

這篇文章為大家帶來了關於php的相關知識,其中主要跟大家介紹怎麼做到一分鐘多進程百萬數據導出到csv並上傳到oss,有興趣的朋友下面一起來看一下吧,希望對大家有幫助。

需求

  1. 產品要匯出某個團隊某些使用者的步行日誌到csv檔案裡,並且要在一個檔案內,而且速度要快不能太耗時間。

問題

  1. 日誌往往意味著資料量大。
  2. 要導在一個檔案內,資料量雖然大也能解決,無非就是分頁查詢並寫入csv。
  3. 速度快時間短,也能解決無非就是多進程導出多個文件,沒有什麼難的,但是需求是一個文件!

解決想法

  1. 先查詢出要匯出的資料總量
  2. 投入到批次佇列裡面啟動多個消費者查詢並寫入到多個csv裡面。
  3. 投遞佇列時記錄每個佇列寫入的csv具體路徑和檔案名稱。
  4. 利用批次佇列的特性在執行完畢時,把上一步驟記錄的多個csv依照順序合併到一個csv裡面
  5. 合併完成之後,刪除合併前的多個csv,保留合併的csv並上傳到oss

結果

經過測試50多萬數據,批次佇列裡面每個佇列分配5萬個資料去處理,走完一個流程耗時不到一分鐘,這種方式有多快取決於伺服器能啟動多少個消費者多少個進程,我測試時用的是自動策略,最高是同時8個消費者在執行。

一分鐘多進程百萬資料匯出到csv並上傳到oss

推薦學習:《laravel影片教學

以上是一分鐘多進程百萬資料匯出到csv並上傳到oss的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:learnku.com。如有侵權,請聯絡admin@php.cn刪除