我正在使用Doctrine和MongoDB作爲應用程序,並且有一項任務應該將數據從CSV文件導入到集合中。大約有5個不同的CSV文件,每個文件至少有450.000個條目,每年至少應該重複1到3次。使用Doctrine將大量數據插入到MongoDB集合中
目前我遍歷文件的所有行,創建一個對象,調用persist()
並刷新每2.500項。
每個項目都不是很大,它有一個ID,一個10-20個字符的字符串,一個5-10個字符的字符串和一個布爾值。
我的第一個問題是: 當我沖洗每5.000項插入會明顯變慢。在我的測試環境中,沖洗5.000個物品需要約102秒,沖洗2.500個物品需要約10秒。
一段時間後,沖洗變慢。如前所述,開始時沖洗2.500件物品花了大約10秒鐘,在100.000件後,沖刷2.500件花費了近一分鐘。
我能做些什麼來優化速度?
你是如何閱讀CSV文件?並且在flush()操作之後清除EntityManager?如果不是這樣,那意味着每個對象都存儲在內存中並使事情變得更慢。 –
@BorisGuéry謝謝,這對我有很大的幫助。如果你添加這個答案,我會接受它。 –