我们已经使用 Apex 数据加载器来插入/删除记录,但是当数据量很大时需要更多时间。
您能否告诉我们任何替代方法来实现这一目标。
mmix 的回答是正确的,我会使用最新的数据加载器,打开批量 api,然后让它散布在您的数据上。您也可以使用 Informatica 之类的合作伙伴,他们在处理大型负载方面拥有丰富的经验。
在幕后,批量 api 将您的上传流式传输到(冗余、备份)磁盘,然后使用并行线程(如果您有多个批次)排队上传作业以加载到数据库中。这可能非常快,每小时有数百万条记录,但速度可能因多种原因而有所不同。没有保证,这是一个异步 api。
如果您有许多顶点触发器或工作流,或者您的负载涉及共享更新(所有权更改等),这可能会使负载减慢许多数量级。
如果您真的遇到负载缓慢的问题,您还可以提交支持案例,并让我们的一位性能专家跟踪您的负载,看看时间花在了哪里。
希望有帮助。
如果您可以使用 force.com 平台,那么您可以使用Bulk API。另请参阅此Dreamforce 09笔记。
如果您想自己操作,请使用 BulkAPI 或管理设置数据导入(设置|管理设置|数据导入|导入业务帐户)。请记住,BulkAPI 的每批限制为 10,000 行,而管理导入的限制为每次上传 50,000 行,因此您必须对数据进行切片。
或者,较新版本的 Data Loader 外部应用程序支持新的 BulkAPI 并且可以为您切片,您可以从 Setup 菜单中的 Administration Setup|Data Management 下载 Data Loader。从那里运行导入并让应用程序将数据分批。
如果导入速度太慢,您可以尝试暂时暂停触发器、非必要的工作流程和帐户验证。除了您无能为力之外,请记住,salesforce 数据库不是直接数据库,它是一个抽象层,必须在每条数据持久存在实际数据库之前对其进行咀嚼,这总是会造成性能损失。