使用 Mars 更新 7000 行高效吗?
我有一项使用 MARS 更新/插入 7000 多行的服务。有更好的方法吗?
I have a service to update/inserts 7000+ rows using MARS. Is there a better way to do this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果您经常这样做,那么对于本卷,我将使用 SqlBulkCopy 将数据推送到临时表(与目标表的架构相同,但隔离),然后使用存储过程执行插入/更新(从临时表到实际表) - 可能包含在事务中。
这将最大限度地减少往返次数,并使用批量插入 API 来推送数据。
如果您不需要一批中的所有内容,另一种选择是以(例如)100 条记录为单位处理数据;这应该可以工作,不会导致事务花费太长的时间 - 它会明显比批量复制方法慢,但具有基于对象的优点,并且不需要您使用额外的工具/语言集。
If you are doing this regularly, then for this volume, I would use
SqlBulkCopy
to push to data into a staging table (same schema to the target table, but isolated), and then use a stored procedure to do the inserts / updates (from the staging table into the actual table) - probably wrapped in a transaction.This will minimize the round-trips, and use the bulk insert API for pushing the data.
If you don't need everything in one batch, another option would be to process the data in blocks of (say) 100 records; this should work, without causing the transactions to take too long - it will be noticeably slower than the bulk-copy approach, but has the advantage of being object-based, and not requiring you to use an extra set of tools / languages.