首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

爬虫性能优化-数据库去重优化

最近公司爬虫出现性能瓶颈,大概问题如下:

爬虫采用分布式框架Celeyr作为分布式任务调度,同时开启了48个并发,去下载48个页面,每个页面本身能够解析出10条记录。以MySQL作为持久存储,在初始阶段通过unique索引作为数据去重。当单表数据达到200W左右的时候发现爬虫速度降下来了。

通过对整个流程分析,最终发现问题在数据插入阶段。这里导致数据插入阶段速度很慢的原因是使用MySQL unique索引作为去重键,当数据量上去之后,维护整个索引的成本不断增加,MySQL索引使用B-Tree,B树(B-Tree)是一种自平衡的树,能够保证数据有序.同时它还保证了在查找、插入、删除等操作时性能都能保持在O(logn)O(logn).需要注意的一点是,并不是一棵自平衡的二叉查找树,它拥有多个分叉,且为大块数据的读写操作做了优化,同时它也可以用来描述外部存储(支持对保存在磁盘或者网络上的符号表进行外部查找)。所以在插入的时候成本太高,因此此处将该索引删除,在后期通过SQL语句去重这种方式大大提升了爬虫性能。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171227G0X8VP00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券