海量采集时,如何成倍提高地址采集入库的速度
其实地址入库时间跟数据库有关。收费版使用了sqlite,免费版使用access。
但是免费版用户也可以提高速度,有些小技巧。。。。。
地址入库的过程分为3步:
1、分页目标网页获得网址
2、跟站点地址库比对,是否重复,如果重复就跳过。
3、如果没有重复,就在站点地址库增加记录。同时在任务数据库增加待采记录。
地址入库速度和什么有关?
1、比对 2、新增记录
但海量采集(比如小说)的时候,比对是很慢的,甚至超过1秒/条。
了解点数据库的朋友会知道,精确比对就是select;提高select的办法就是索引。
这是站点的地址数据库目录:火车目录\PageUrl\Site_*.mdb
使用microsoft access打开这个文件,对pageurl表的urls字段,设置唯一和索引。
这会大大加快比对的速度。 那么是不是对所有字段都设置索引呢?
不是。索引对select会大幅提高速度,但会耗费更多添加记录所需时间。
这是个平衡问题。只需要对必要的字段设置索引。
另外,海量采集到大量数据后,每次任务启动都需要大量时间,因为要计算未采和未发任务,需要时间。
这时对已发和已采这两个字段设置索引,同样会明显缩短时间。
这里是站点地址库
站点地址库的数据库
站点地址库的数据库的表和字段 还有一条技巧:
火车使用一段时间,采到大量数据后,应该将已发表的数据清除掉,这样也会提高效率,降低CPU的占用。
2009免费版已经提供了手动批量删除的功能。 那么是不是对所有字段都设置索引呢?
不是。索引对select会大幅提高速度,但会耗费更多添加记录所需时间。
这是个平衡问题。只需要对必要的字段设置索引。
另外,海量采集到大量数据后,每次任务启动都需要大量 ...
xdaoke 发表于 2009-5-11 11:44 http://bbs.locoy.com/images/common/back.gif
什么是索引啊
【编程术语】使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构,例如 employee 表的姓(lname)列。如果要按姓查找特定职员,与必须搜索表中的所有行相比,索引会帮助您更快地获得该信息。
索引是一个单独的、物理的数据库结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。
索引提供指向存储在表的指定列中的数据值的指针,然后根据您指定的排序顺序对这些指针排序。数据库使用索引的方式与您使用书籍中的索引的方式很相似:它搜索索引以找到特定值,然后顺指针找到包含该值的行。
在数据库关系图中,您可以在选定表的“索引/键”属性页中创建、编辑或删除每个索引类型。当保存索引所附加到的表,或保存该表所在的关系图时,索引将保存在数据库中。 怎么设置过索引,怎么样增快比对的速度,新手求教 不会索引的 去百度视频搜一下! 11855
【编程术语】使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构,例如 employee 表的姓(lname)列。如果要按姓查找特定职员,与必须搜索表中的所有行相比,索引 ...
xdaoke 发表于 2009-5-11 12:38 http://bbs.locoy.com/images/common/back.gif是不是直接把它改成“无重复” 对于批量地址可以先生成文本地址(用字典生成器),导入数据库PageUrl字段,这样就免去采地址这个环节了,直接采内容,速度提升一倍!我就是这么干的。
页:
[1]
2