Python,Django如何處理百萬條資料寫入到資料庫?

時間 2021-06-03 00:25:39

1樓:

根據描述,我覺得

首先,找到平瓶頸,讀慢還是寫慢;

找到問題後,讀慢就解決讀的問題,比如宿主機io,網路,文字大小等等因素;寫慢就解決寫的問題,比如考慮增加併發/調整資料庫效能等等

關於讀一行寫一行的做法,一般不建議

個人的建議(假如應用主機和資料庫之間的通訊順暢,待處理文字可以儲存到應用主機上)

1、假如文字大小可接受(全部載入不會吃爆記憶體的前提),建議一次性讀完所有文字;假如文字大小不可接受,建議事先進行文字拆分,控制大小

2、文字內容中建議有唯一關鍵字,資料中儲存匯入的文字名稱;這些在3中會用到;

4、關於資料儲存,建議每n條記錄提交(commit)一次,這個n的值,比較大程式取決於資料庫的配置和吞吐能力,以及資料庫架構

2樓:潘飛

這個比較適合做成非同步任務,可以考慮使用Celery非同步任務佇列,這類請求全部非同步處理。

非同步處理過程中盡量使用批量操作:

一次性掃瞄百萬條資料,證資料格式正確性;

將驗證後的資料寫到臨時檔案,格式比如CSV,通過資料庫Load機制一次性匯入;

3樓:HylaruCoder

先提供一種使用ORM來處理的方案

(減少網路傳輸帶來的延遲)保證 Python 程式和資料庫在同一臺機器上。

(化整為零,分而治之) 拆分該檔案為多個記憶體可直接容納的檔案,執行緒池 Map 多個執行緒提交資料。

(善用事務) 讀 5000 行左右的時候,將 5000 行左右的記錄一次性儲存到資料庫中。Django ORM 的事務了解一下?

(去掉資料庫的約束) 外來鍵脫掉脫掉,索引脫掉脫掉,有啥約束統統脫掉脫掉。Insert 完再加上。

其實上面這個方案速度還真不是很快.

最快的方式是, 先處理文字檔案為 CSV 檔案,然後用資料庫官方自帶的 importer 匯入即可。

4樓:小熊

並行的瓶頸還是會在寫入資料庫的時候體現出來,還是應該重點考慮使用Django的bulk操作:

QuerySet API reference

將多條資料一併寫入,最簡單的手動加乙個每讀5000條存一次,執行時間都會有質的飛躍

5樓:

丟到後台,找個合適的工具轉成正確的格式,調 mysql 的 load data 。

另外我就不信你的這個服務需要反覆去插入百萬條資料,如果是偶爾來的,手工做最方便。

Ruby 或者 Python Django 適合初期創業團隊嗎?

臧大為 RAILS比較合適。PYTHON可以考慮Django。從國外初創公司來看,兩者都有。RAILS更流行一些。Rails有很高的開發效率 海量的gems 還有完善的測試工具。這些都是優勢。非常適合初創專案。 蘇勇 當然適合了,Ruby和Python的開發速度都非常快。Python可以用Djang...

學Python Django學得很迷茫,怎麼辦?

不知所云111 這非常正常,django這種大而全的框架不適合新人入門的,強行學會也是看到表面而已,換乙個環境,說不定就用不起來了。建議從簡單的入手,可以看看flask,然後手寫sql語句,等做到一定程度,再回頭看django,才知道作者的良苦用心。而且到了一定程度,用flask做乙個類似djang...

腳踝扭傷如何處理?

體創首席動力熊 剛扭傷時,要採用國際通用的PRICE原則,即 1.Protect 保護,避免傷情加重 2.Rest 休息 3.Ice 冰敷48小時以內冰敷減少腫脹4.Compression 以彈性繃帶包紮加壓5.Elevation 把患處抬高 生梔了30g,生大黃30g,玄明粉30g。研粉,用蛋清或...