猿问

数据库大量数据update慢,如何克服?

描述

数据库是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。从主数据库取任务,在acreate。但是问题是:在主数据中无法识别是否被爬取。因为查询语句select id,link from table where data is null;

  • 尝试新数据库,听说radis很快,不知道合不合适。求教

另外,最佳连接数是多少,之前不懂,做了5-6个连接。结果更新的数据更少,现在只有两个连接,反而很多。一小时2w数据

达令说
浏览 1155回答 1
1回答

慕妹3146593

这是个好问题,认真回答的话能写不少。不过鉴于题目给出的信息量过少,就不发散了。 首先,每个更新100ms,你有检查过DB的瓶颈在哪里吗?磁盘慢吗?还是内存不够?不知道瓶颈靠瞎猜,很难解决问题。 其次,我想你的ID一定是有索引的对吧,否则应该更慢些。然后一个简单的改进就是,你不是每个更新都是一个Transaction吧,试一试攒个几百上千个update之后一次提交。 然后就是,我猜你有优化过PG的配置吧,如果没有的话,找这方面的资料看一看,试一试。
随时随地看视频慕课网APP

相关分类

Python
我要回答