描述
数据库是postgresql
python3
现在有1700万
数据,最大ID3000万+
id | link | data |
---|---|---|
19001212 | www.somelink.com | some str |
我的任务是爬虫,取出单条数据link
id
段,爬取数据返回给data
.
update table set data = %s where id = %s
所以update
操作需要根据id
查询到数据,并返回。我测试了一下单条数据的更新需要0.1s
.
我的想法
见识少,求教 下面是我的想法
新建数据库
a
。从主数据库取任务,在a
中create
。但是问题是:在主数据中无法识别是否被爬取。因为查询语句select id,link from table where data is null;
尝试新数据库,听说
radis
很快,不知道合不合适。求教
另外,最佳连接数
是多少,之前不懂,做了5-6个连接
。结果更新的数据更少,现在只有两个连接,反而很多。一小时2w数据
这是个好问题,认真回答的话能写不少。不过鉴于题目给出的信息量过少,就不发散了。
首先,每个更新100ms,你有检查过DB的瓶颈在哪里吗?磁盘慢吗?还是内存不够?不知道瓶颈靠瞎猜,很难解决问题。
其次,我想你的ID一定是有索引的对吧,否则应该更慢些。然后一个简单的改进就是,你不是每个更新都是一个Transaction吧,试一试攒个几百上千个update之后一次提交。
然后就是,我猜你有优化过PG的配置吧,如果没有的话,找这方面的资料看一看,试一试。