真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

為什么進行l(wèi)ist()操作時MongoDB比PostgreSQL慢了7倍

這篇文章給大家介紹為什么進行l(wèi)ist()操作時MongoDB比PostgreSQL慢了7倍,內(nèi)容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

成都創(chuàng)新互聯(lián)長期為上1000+客戶提供的網(wǎng)站建設服務,團隊從業(yè)經(jīng)驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為普蘭店企業(yè)提供專業(yè)的成都做網(wǎng)站、網(wǎng)站制作,普蘭店網(wǎng)站改版等技術服務。擁有十年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。


最近有需求,要將一個局域網(wǎng)Web數(shù)據(jù)平臺遷移到線上,順帶著,本地服務使用的PostgreSQL也要替換成國內(nèi)某云的MongoDB。
由于之前的Web框架選擇的Django,為了能夠最小限度地改動代碼,并對接上MongoDB上已存在的數(shù)據(jù)庫和數(shù)據(jù),在一番對比之后(Djongo和MongoEngine),選擇了MongoEngine這個對象文檔映射(ODM)模塊來替代Django原有的ORM。
對照著MongoEngine的文檔一頓操作,第一個頁面遷移完成,趕緊打開看看。
不看則已,一看瞎哭,頁面加載完足足等了1、2、3、4、5、6、7、8、……27秒  

為什么進行l(wèi)ist()操作時MongoDB比PostgreSQL慢了7倍
(線上MongoDB服務)

而之前的系統(tǒng)這個頁面打開只需要幾秒鐘:  

為什么進行l(wèi)ist()操作時MongoDB比PostgreSQL慢了7倍
(本地PostgreSQL服務)

這還了得,上線了不是給自己丟臉嗎,趕緊排查測試。  
在這個頁面里面,主要數(shù)據(jù)操作是從數(shù)據(jù)庫中查詢出原始數(shù)據(jù),然后加載到Pandas的DataFrame中,接著在Pandas中進行各種數(shù)據(jù)處理,最后返回JSON數(shù)據(jù)給前端進行渲染。
數(shù)據(jù)庫總的數(shù)據(jù)量為接近500萬,最后的查詢結果在3萬左右。
對各個環(huán)節(jié)分別進行測試發(fā)現(xiàn),主要的時間消耗在了從數(shù)據(jù)庫讀取數(shù)據(jù),然后加載到Pandas這個過程中。
于是將這個過程專門提取出來,單獨測試其消耗的時間。  結果發(fā)現(xiàn),使用MongoEngine進行數(shù)據(jù)查詢,然后加載到Pandas中需要幾十秒的時間:  

為什么進行l(wèi)ist()操作時MongoDB比PostgreSQL慢了7倍
 21秒的耗時,可能是由于MongoEngine對PyMongo進行封裝之后的性能不行吧,于是直接使用PyMongo進行測試:
為什么進行l(wèi)ist()操作時MongoDB比PostgreSQL慢了7倍
果然,經(jīng)過一層封裝之后,MongoEngine的效率不如PyMongo,但是直接使用PyMongo也消耗了14秒的時間。
而在本地使用PostgreSQL作為數(shù)據(jù)庫后端的Django ORM測試僅僅花費了3秒的時間:  

為什么進行l(wèi)ist()操作時MongoDB比PostgreSQL慢了7倍
使  用list()對數(shù)據(jù)  查詢結果進  行  處理  是將其加  載  到P  andas中  的一  個常規(guī)前置  操作,相當于遍歷查詢  集的結  果并將每一條數(shù)據(jù)添加到一個  列表中。  類似  于以下操作:  
 
   
     
   
   
   res = []
      
    
    for i in xx:
      
    
       res.append(i)
只是一個list()操作,就讓MongoDB的速度比PostgreSQL慢如此之多,難道我哪里操作不對?


關于為什么進行l(wèi)ist()操作時MongoDB比PostgreSQL慢了7倍就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。


新聞名稱:為什么進行l(wèi)ist()操作時MongoDB比PostgreSQL慢了7倍
標題路徑:http://weahome.cn/article/iepspd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部