sphinx+python 索引耗内存
搜索一直用的是coreseek,数据源方面用的是python,以前数据量少的时候没问题,数据量一大,用python建索引就出现问题。
未做优化前,python建索引的过程的第一步就是先捞出所有的数据放内存,这也是官网文档的做法,数据量一大,必然导致占用内存过大,导致进程终止或者服务器负载过高。
实际数据:200W,在执行python数据源时,内存达到2g以上。
优化后的数据:内存维持在427M,没有继续增长。
原先的python的代码把sql的查询都放在defConnected(self)方法,一次性全部查询出来后使用defNextDocument(self)遍历。
现把查询语句调到NextDocument(self)方法中。
基本思路如下:
1.先查询出该表的最大id值
2.对查询进行分页,比如10页,limit=maxId/10
3.第一次执行NextDocument或者执行次数是limit的倍数的时候,执行sql查询,把查询结果出分页结果集
4.循环遍历结果集
5.分页次数到达11页时,returnFalse。
此方法基本可以保证大数据量下建索引没有内存问题。相关推荐
坚持是一种品质 2020-11-16
huavhuahua 2020-11-20
weiiron 2020-11-16
cakecc00 2020-11-15
千锋 2020-11-15
JakobHu 2020-11-14
guangcheng 2020-11-13
xirongxudlut 2020-11-10
solarLan 2020-11-09
pythonxuexi 2020-11-08
文山羊 2020-11-07
susmote 2020-11-07
wuShiJingZuo 2020-11-05
Pythonjeff远 2020-11-06
jacktangj 2020-11-04
lousir 2020-11-04
YENCSDN 2020-11-17
lsjweiyi 2020-11-17