首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将大量数据上载到生产sql server,最大限度地减少争用。

将大量数据上载到生产sql server,最大限度地减少争用。
EN

Stack Overflow用户
提问于 2009-04-09 22:52:37
回答 2查看 601关注 0票数 0

我正在运营一个网站,帮助管理医疗诊所的大量信息。应用程序的一部分需要从excel电子表格上传患者文件。患者表有大约100万条记录,excel导入需要一次插入或更新10k、20k、30k患者记录。与此同时,其他客户也在敲打着桌子。处理时间不如减少数据库争用重要。你会推荐什么策略?

我知道其他网站有效地做到了这一点。Salesforce允许您一次上传大量数据。

EN

回答 2

Stack Overflow用户

发布于 2009-04-10 02:53:04

首先将Excel工作表加载到临时表中,然后决定是否在单个批次中更新/插入行。

通常,将一百万行从一个表插入到另一个表应该足够快,以便在服务器处于负载状态时运行。在插入过程中,您将拥有一个锁,但这应该是几秒钟的事情。除非你每分钟加载数十亿条记录,或者你的upsert操作非常密集,否则我不认为这是一个问题。

如果你的upsert非常复杂,有很多方法可以做到。您可以在单个批次中插入,但将生产记录标记为不完整,因为它们的从属记录已更新。您可以将分段行标记为未处理并成批处理。

票数 4
EN

Stack Overflow用户

发布于 2009-04-10 00:15:42

如果每个行update都是独立的,则运行一个循环,该循环获取一行、更新表、获取另一行...

然后,您可以在循环中设置延迟,以使其速度减慢,以避免影响主站点(可以使用某种负载度量来动态调整此延迟)。可以使用像设置之类某种令牌环来一起进行多个更新节流。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/736162

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档