我正在运营一个网站,帮助管理医疗诊所的大量信息。应用程序的一部分需要从excel电子表格上传患者文件。患者表有大约100万条记录,excel导入需要一次插入或更新10k、20k、30k患者记录。与此同时,其他客户也在敲打着桌子。处理时间不如减少数据库争用重要。你会推荐什么策略?
我知道其他网站有效地做到了这一点。Salesforce允许您一次上传大量数据。
发布于 2009-04-10 02:53:04
首先将Excel工作表加载到临时表中,然后决定是否在单个批次中更新/插入行。
通常,将一百万行从一个表插入到另一个表应该足够快,以便在服务器处于负载状态时运行。在插入过程中,您将拥有一个锁,但这应该是几秒钟的事情。除非你每分钟加载数十亿条记录,或者你的upsert操作非常密集,否则我不认为这是一个问题。
如果你的upsert非常复杂,有很多方法可以做到。您可以在单个批次中插入,但将生产记录标记为不完整,因为它们的从属记录已更新。您可以将分段行标记为未处理并成批处理。
发布于 2009-04-10 00:15:42
如果每个行update都是独立的,则运行一个循环,该循环获取一行、更新表、获取另一行...
然后,您可以在循环中设置延迟,以使其速度减慢,以避免影响主站点(可以使用某种负载度量来动态调整此延迟)。可以使用像设置之类某种令牌环来一起进行多个更新节流。
https://stackoverflow.com/questions/736162
复制相似问题