看板 Python 關於我們 聯絡資訊
我用的資料庫是mysql 我現在想要把大量的文章(幾十萬篇吧)切token 然後針對每個token存進去資料庫裡,但隨著資料量越大,速度越緩慢 假設我有一個存token的table,裡面有token,token_frequency 每次我parser出一個token的話,我都要跟table裡面token做比對,看有無這筆資料 沒有的話就insert,但做到越後面,我速度就會越慢(table的token有在msql裡選了建index) 然後我有想了1個解決方法: 就是不用mysql裡的"把此鍵設為index" 改為程式開始跑時,我就用dict建hash table,當parser出一個token就比對到hash table 沒有的話就insert,不用再去資料庫找 請問以上這方法會比在mysql裡直接把key建成index快嗎? 這種問題還有其他種比較有效率的解法嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.141.42
Lucemia:看python 記憶體用量會不會爆掉 11/06 10:20
Lucemia:不會的話直接將資料全部處理完在一次寫入mysql 11/06 10:20
Lucemia:會的話就用檔案分別暫存 11/06 10:21
Lucemia:正常像常用英文單字有限,要直接在python裡面處理完不難 11/06 10:21
darkroad:Insert 的table用index 會越來越慢因為要一值重整 11/06 11:13
StubbornLin:要不要考率用map reduce的分散式寫法? 11/06 12:04
StubbornLin:基本上google用來切單詞找頻率好像就是用這種方法 11/06 12:05
StubbornLin:http://discoproject.org/ Python的map reduce 11/06 12:12
StubbornLin:現成的map reduce分散式運算 11/06 12:13
StubbornLin:又或著 如果你不喜歡map reduce 11/06 12:32
StubbornLin:可以考慮把文章分成好幾群 降到可以開dict的數量級 11/06 12:33
StubbornLin:然後就照你說的 每台電腦parse文章都用dict檢查 11/06 12:34
StubbornLin:等那一整部份的文章做完 再一口氣存回mysql 11/06 12:34
iapptt:如果不堅持自己做,可用sphinx fulltext search engine 11/10 11:36