1

我们已经使用 Apex 数据加载器来插入/删除记录,但是当数据量很大时需要更多时间。

您能否告诉我们任何替代方法来实现这一目标。

4

3 回答 3

2

mmix 的回答是正确的,我会使用最新的数据加载器,打开批量 api,然后让它散布在您的数据上。您也可以使用 Informatica 之类的合作伙伴,他们在处理大型负载方面拥有丰富的经验。

在幕后,批量 api 将您的上传流式传输到(冗余、备份)磁盘,然后使用并行线程(如果您有多个批次)排队上传作业以加载到数据库中。这可能非常快,每小时有数百万条记录,但速度可能因多种原因而有所不同。没有保证,这是一个异步 api。

如果您有许多顶点触发器或工作流,或者您的负载涉及共享更新(所有权更改等),这可能会使负载减慢许多数量级。

如果您真的遇到负载缓慢的问题,您还可以提交支持案例,并让我们的一位性能专家跟踪您的负载,看看时间花在了哪里。

希望有帮助。

于 2011-05-01T03:32:29.940 回答
1

如果您可以使用 force.com 平台,那么您可以使用Bulk API。另请参阅此Dreamforce 09笔记。

于 2011-04-18T09:33:58.823 回答
0

如果您想自己操作,请使用 BulkAPI 或管理设置数据导入(设置|管理设置|数据导入|导入业务帐户)。请记住,BulkAPI 的每批限制为 10,000 行,而管理导入的限制为每次上传 50,000 行,因此您必须对数据进行切片。

或者,较新版本的 Data Loader 外部应用程序支持新的 BulkAPI 并且可以为您切片,您可以从 Setup 菜单中的 Administration Setup|Data Management 下载 Data Loader。从那里运行导入并让应用程序将数据分批。

如果导入速度太慢,您可以尝试暂时暂停触发器、非必要的工作流程和帐户验证。除了您无能为力之外,请记住,salesforce 数据库不是直接数据库,它是一个抽象层,必须在每条数据持久存在实际数据库之前对其进行咀嚼,这总是会造成性能损失。

于 2011-04-18T09:54:59.187 回答