我对使用数据库还很陌生,但我目前有一个使用 MYSQL 数据库用 C# 编写的 webCrawler。随着站点被抓取,爬虫经常从数据库中写入和删除记录。
每条记录都有主键,即 URL 的 MD5 校验和,以确保没有表有两个重复的条目。
目前,在插入数据库之前检查表以查看是否存在重复项是一种很好的做法。即对数据库的两个操作。
或者添加记录并让数据库优雅地无法添加它就足够了。
同样的问题与删除等其他操作相关。
目前,我试图从单个客户端(来自该客户端的多个连接)每分钟处理 1000 条记录。知道该级别的数据库活动,答案是否会发生变化。
此外,经常会有重复。并且将跳过添加代码。假设每增加十个,就有一个新记录。
对于插入,您可以使用INSERT ... ON DUPLICATE KEY UPDATE .... 如果主键已被使用,这可以让您更新某些字段。
语法类似于:
INSERT INTO `table`
(`id`, `column1`, `column2`, `column3`)
VALUES ('key', 'data1', 'data2', 'data3')
ON DUPLICATE KEY UPDATE
`column1`= values(`column1`),
`column2` = values(`column2`),
`column3` = values(`column3`);
Run Code Online (Sandbox Code Playgroud)
更多信息:http://dev.mysql.com/doc/refman/5.6/en/insert-on-duplicate.html
另外,如果您正在运行异步插入,请查看INSERT DELAYED.
更多信息:http://dev.mysql.com/doc/refman/5.6/en/insert-delayed.html