php-web爬行:讨论;索引唯一URL';s"性能问题
(请原谅我英语不好) 我正在操作一个特定URL范围内的自定义网络爬虫。 我正在测试它,到目前为止,一切都很正常 最近我注意到一个我想讨论的性能问题——机器人正在抓取索引的页面 在url_池表中,在目标页面中搜索机器人程序保存的目标内容时 如果它们不在表中,则它们找到的页面链接。。。 我在操作几个爬网脚本(同时)时遇到一些冲突问题,但是 我修好了 在抓取了大约150万页之后,我的url_池表包含了近500万行,其中包含 url、一些“标志”、url哈希(32位的simhash)、域等 mysql db表是innodb,具有较大的缓冲区,并且根据搜索查询的索引良好。 在监控机器人的性能时,我注意到我使用的“检查是否存在”功能 为了防止在我的表中重复URL,速度越来越慢。 我知道,很明显,表越大,在其中搜索所需的时间就越长,但要看到执行时间的增加似乎为时过早 如果我总结一下绩效:php-web爬行:讨论;索引唯一URL';s"性能问题,php,mysql,web-crawler,large-data,Php,Mysql,Web Crawler,Large Data,(请原谅我英语不好) 我正在操作一个特定URL范围内的自定义网络爬虫。 我正在测试它,到目前为止,一切都很正常 最近我注意到一个我想讨论的性能问题——机器人正在抓取索引的页面 在url_池表中,在目标页面中搜索机器人程序保存的目标内容时 如果它们不在表中,则它们找到的页面链接。。。 我在操作几个爬网脚本(同时)时遇到一些冲突问题,但是 我修好了 在抓取了大约150万页之后,我的url_池表包含了近500万行,其中包含 url、一些“标志”、url哈希(32位的simhash)、域等 mysql
- url_pool~100K行->0.8s用于整个爬网过程(1页)
- url\u池~800K行->1.1s
- url\u池~1.8M行->1.9s
- url_池~3.5M行->3.2s
- url_池~5M行->4.8s
SELECT EXISTS(SELECT 1 FROM table1 WHERE ...)
对于索引列上的搜索查询(在文档中建议更快的结果),
表结构是一个非常简单的表
- 身份证
- 链接(varchar 400)
- link_simhash(varchar 32)
- 域(varchar 200)
- 旗帜1(布尔)
- 旗2(铃)
- 博图访问(国际)
- 找到日期(日期)
- 爬网日期(日期)
有什么想法吗???没有人我的问题有什么问题?您用来查找重复项的查询是什么样子的?您还可以发布表的结构,包括索引和解释吗?感谢您的评论(遗憾的是,您是唯一一个)观看我的编辑…您是否尝试对表应用约束以拒绝已存在哈希的查询?您甚至可以将其索引为唯一。或者只需更改子查询。不要选择1。做一个Select count(*)就不会有问题了。Ryoku,使用unique可能会触发一个不必要的错误。。。我测试了计数(*)与选择1。。。没有区别,因为exists将返回null或1(如果已建立)。还有什么想法吗??