通过组插入减少 SQL Server 开销
我有一个爬虫可以跨网页获取文档。当我收到一个页面时,我立即将内容插入到sql server中(每秒20次插入)。这会降低我的应用程序和服务器的响应速度。我想我可以在一个组中收集 20 个项目,然后使用带有 (20*fieldCount) 的存储过程插入它。
这会稍微减少 sql server 的开销,但我不知道将 200 个参数传递给 sql server 存储过程不会产生额外的开销。请帮我。 有没有更好的方法来最小化这种频繁插入的开销?
I have a crawler that fetch documents across web pages. when i receive a page, i immediately insert the content in sql server, (20 insertion per second). this slow down my application and server responsiveness. I thought I could collect 20 item in a group and then insert it using a store procedure with (20*fieldCount).
This reduce the sql server overhead a bit, but i don't know passing 200 parameter to sql server stored procedure doesn't make another overhead. please help me.
is there any better way to minimize the overhead of this frequent insertion?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
更少的连接打开
甚至像现在一样调用同一个SP,连续调用20次也会更快。因为您只需建立一次 SQL 连接,然后推送 20 条记录。主要开销是打开和关闭连接。
Less connection opening
It would be faster even to call the same SP as you have now and call it 20 times in a row. Because you'd only establish a SQL connection once and then push 20 records in. The major overhead being opening and closing a connection.
您可以准备数据的 xml,然后将 xml 传递到存储过程的输入参数中。在使用
openXml
的存储过程中,您可以在数据库中插入数据。You can prepare a xml of your data and then pass xml in input parameter of stored procedure. and in stored procedure using
openXml
you can insert data in DB.