php從mysql讀取超過200W行的表

2021-09-02 17:14:03 字數 389 閱讀 6018

需要從乙個大表,如user表中讀取所有user資料再做整理並匯出csv。如果使用框架會報記憶體不足,因為很多php框架會將資料庫資料放入臨時變數。

php fatal error: allowed memory size of ****** bytes .....

解決辦法:

1 可以用mysql_unbuffered_query 這個api不使用客戶端快取,這樣就不存在php記憶體分配的問題。再使用mysql_fetch_assoc 逐行獲取資料

2 根據userid批量處理,分批匯出多個csv檔案。

3 使用臨時表儲存資料,再從臨時表匯出csv。

結合第1和第3點處理,原本6個小時才能生成的資料,優化後不到10分鐘匯入到臨時表,很快就匯出到csv了。

參考:

PHP使用PDO從mysql讀取大量資料處理詳解

前言 環境適用場景 需要處理一定資料集業務 pdo 關鍵設定 dbh new pdo dsn,user,pass 關鍵設定,如果不設定,php依舊會從pdo一次取出資料到php dbh setattribute pdo mysql attr use buffered query,false perp...

PHP讀取MySQL資料

先配置一下資料庫 define db host localhost 資料庫位址,一般為localhost define db user root 資料庫使用者名稱 define db psw 資料庫密碼 define db db databasename 需要操作的資料庫 連線 conn mysql...

php讀取mysql的簡單例項

複製 如下 php link mysql connect localhost root 之前的管理員密碼 if link echo 沒有連線成功 mysql select db infosystem link 選擇資料庫 q select from info sql查詢語句 nbs程式設計客棧p m...