描述
數(shù)據(jù)庫(kù)是postgresql python3
現(xiàn)在有1700萬數(shù)據(jù),最大ID3000萬+
id
link
data
19001212
www.somelink.com
some str
我的任務(wù)是爬蟲,取出單條數(shù)據(jù)link id段,爬取數(shù)據(jù)返回給data.
update table set data = %s where id = %s所以u(píng)pdate操作需要根據(jù)id查詢到數(shù)據(jù),并返回。我測(cè)試了一下單條數(shù)據(jù)的更新需要0.1s.
我的想法
見識(shí)少,求教 下面是我的想法
新建數(shù)據(jù)庫(kù)a。從主數(shù)據(jù)庫(kù)取任務(wù),在a中create。但是問題是:在主數(shù)據(jù)中無法識(shí)別是否被爬取。因?yàn)椴樵冋Z句select id,link from table where data is null;
嘗試新數(shù)據(jù)庫(kù),聽說radis很快,不知道合不合適。求教
另外,最佳連接數(shù)是多少,之前不懂,做了5-6個(gè)連接。結(jié)果更新的數(shù)據(jù)更少,現(xiàn)在只有兩個(gè)連接,反而很多。一小時(shí)2w數(shù)據(jù)
1 回答

慕妹3146593
TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超9個(gè)贊
這是個(gè)好問題,認(rèn)真回答的話能寫不少。不過鑒于題目給出的信息量過少,就不發(fā)散了。
首先,每個(gè)更新100ms,你有檢查過DB的瓶頸在哪里嗎?磁盤慢嗎?還是內(nèi)存不夠?不知道瓶頸靠瞎猜,很難解決問題。
其次,我想你的ID一定是有索引的對(duì)吧,否則應(yīng)該更慢些。然后一個(gè)簡(jiǎn)單的改進(jìn)就是,你不是每個(gè)更新都是一個(gè)Transaction吧,試一試攢個(gè)幾百上千個(gè)update之后一次提交。
然后就是,我猜你有優(yōu)化過PG的配置吧,如果沒有的話,找這方面的資料看一看,試一試。
添加回答
舉報(bào)
0/150
提交
取消