怎么样优化网络蜘蛛程序

hn_xiayanping 2010-10-16 09:55:44
我要从网上抓取数据ProductID,以及相应的图片,PDF的数据,保存到数据库中,
这个ProductID不能重复,所以我要验证这个ProductID在数据库是否存在。
我现在的做方法是,开十个线程把所有的数据拿到,包括图片和PDF,在插入数据时,我会lock这个方法,并在方法中检查这个ProductID是存在,存在不插入,反之就插入数据,现在速度不快,有两种可能,
一是我把所有的数据拿到手包括图片和PDF,这会用掉不少时间,才去验证ProductID是否存在,
二是每插入一条数据都会打开一个数据连接,感觉这也会用掉不用时间。

我现在的想法是,在拿到ProductID时我就去验证是否存在,就会节约我下载图片和PDF的时间,但是会加大我访问数据库的时间,不知道各位有什么好方法解决
...全文
105 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuyq11 2010-10-16
  • 打赏
  • 举报
回复
并发操作,SQL锁机制,判断是否重复
线程延迟
list等保存ID,判断contains
数据库操作及时关闭
hn_xiayanping 2010-10-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 sp1234 的回复:]

对于数据库问题,有两个知识是前提:

1. 你Open数据库的代码到底是逻辑地打开还是物理地打开?如果是逻辑的,那就为了不胡乱而是正确地去读取所谓物理连接对象。如果是物理的,这时候才需要自己去找一个连接池系统来替代你的代码(但是代码上仍然是使用逻辑Open数据库的)。

2. 不要滥用lock,滥用它当然就卡死啦。重新设计往往很简单,往往就是设计者太纠结于lock了。
[/Quote]

我在数据验证时,也在纠结于lock,不用lock会不会产生并发问题,同时验证时,都没有查到已经存在的ProductID,但是这两个线程的ProductID相同,在插入时会产生重复问题,不知道这位达人,有什么好的建议,谢谢
hn_xiayanping 2010-10-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 sp1234 的回复:]

对于数据库问题,有两个知识是前提:

1. 你Open数据库的代码到底是逻辑地打开还是物理地打开?如果是逻辑的,那就为了不胡乱而是正确地去读取所谓物理连接对象。如果是物理的,这时候才需要自己去找一个连接池系统来替代你的代码(但是代码上仍然是使用逻辑Open数据库的)。

2. 不要滥用lock,滥用它当然就卡死啦。重新设计往往很简单,往往就是设计者太纠结于lock了。
[/Quote]

我在数据验证时,也在纠结于lock,不用lock会不会产生并发问题,同时验证时,都没有查到已经存在的ProductID,但是这两个线程的ProductID相同,在插入时会产生重复问题,不知道这位达人,有什么好的建议,谢谢
hn_xiayanping 2010-10-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 sp1234 的回复:]

对于数据库问题,有两个知识是前提:

1. 你Open数据库的代码到底是逻辑地打开还是物理地打开?如果是逻辑的,那就为了不胡乱而是正确地去读取所谓物理连接对象。如果是物理的,这时候才需要自己去找一个连接池系统来替代你的代码(但是代码上仍然是使用逻辑Open数据库的)。

2. 不要滥用lock,滥用它当然就卡死啦。重新设计往往很简单,往往就是设计者太纠结于lock了。
[/Quote]

在验证数据时,我感觉要用lock,要不然在多线程的环境中,有可能并发插入数据,造成ProductID重复,不知道这位达人有什么好的建议,谢谢
  • 打赏
  • 举报
回复
对于数据库问题,有两个知识是前提:

1. 你Open数据库的代码到底是逻辑地打开还是物理地打开?如果是逻辑的,那就为了不胡乱而是正确地去读取所谓物理连接对象。如果是物理的,这时候才需要自己去找一个连接池系统来替代你的代码(但是代码上仍然是使用逻辑Open数据库的)。

2. 不要滥用lock,滥用它当然就卡死啦。重新设计往往很简单,往往就是设计者太纠结于lock了。
sprc_lcl 2010-10-16
  • 打赏
  • 举报
回复
1.数据库一直打开不关闭 (如果可以独占的话)
2.拿到直接验证,插入

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧