(请原谅我的英语不好)
我正在特定范围的网址上运行自定义网络抓取工具。 我正在测试它,到目前为止一切都很完美..
最近我注意到我想要讨论的性能问题 - 机器人正在抓取被编入索引的页面 在url_pool表中,在目标页面中搜索机器人保存的目标内容 如果他们不在表中,他们找到的页面链接... 我在操作多个抓取脚本(同时)时遇到了一些冲突问题 我修好了。
在抓取大约1.5M页面之后,我的url_pool表包含了几乎包含的5M行 网址,一些“标志”,网址哈希(simhash - 32位数字),域名等...
mysql db表是带有大缓冲区的innodb,并根据搜索查询编制索引。 我在监视机器人的性能时注意到我使用的“检查是否存在”功能 防止我的表中的重复网址变得越来越慢。 我知道显而易见的是,表格越大,搜索它所需的时间越长,但看到执行时间增加似乎为时尚早。
如果我总结一下表现:
另一个重要的事实是,在检查表中是否存在url而不是使用文本进行搜索时,我正在创建哈希,然后将其与表中的其他人匹配,我遵循了我在早期阶段收到的建议构建爬虫,并发现它提高了性能。
现在,每页只需1.9秒(考虑一起运行4个机器人),但5s太慢了......
你能建议我吗?
修改
更多信息:
我使用了:
SELECT EXISTS(SELECT 1 FROM table1 WHERE ...)
对于索引列的搜索查询(在文档中建议更快的结果), 表结构是一个非常简单的表
id
link(varchar 400)
link_simhash(varchar 32)
domain(varchar 200)
flag 1(bool)
flag 2(boll)
bot_visit(int)
date_found(日期)
date_crawled(date)
正如我所说的那里指的是链接哈希。
任何想法???没有人???什么问题我的问题???