【发布时间】:2011-07-20 03:15:33
【问题描述】:
我目前面临着将大约 20 万个项目从自定义 CMS 实施导入 Sitecore 的任务。我创建了一个简单的导入页面,它使用 Entity Framework 连接到外部 SQL 数据库,并且创建了所有必需的数据模板。
在大约 5K 项的测试导入期间,我意识到我需要找到一种方法来使导入运行得更快,因此我开始寻找一些有关为此目的优化 Sitecore 的信息。我得出的结论是,那里没有太多具体信息,所以我想分享我发现的内容,并为其他人提供进一步优化的机会。我的目标是为 Sitecore 创建某种维护模式,可以在导入大量数据时使用。
我在 Mark Cassidy 的博文 http://intothecore.cassidy.dk/2009/04/migrating-data-into-sitecore.html 上找到了最有用的信息。在这篇文章的底部,他提供了一些关于何时运行导入的提示。
- 如果迁移大量数据,请尝试禁用尽可能多的 Sitecore 事件处理程序以及任何其他可以避免的情况。
- 使用 BulkUpdateContext()
- 别忘了你的目标语言
- 如果可以,请将这些字段设为共享且未版本化。这应该有助于加快迁移执行速度。
我从这个列表中注意到的第一件事是 BulkUpdateContext 类,因为我从未听说过它。我很快就明白了为什么在 SND 论坛和 PDF 文档中搜索没有返回任何结果。所以想象一下,当我实际测试它并发现它至少将项目创建/删除提高了十倍时,我会感到惊讶!
接下来我看到的第一点是他基本上建议创建一个仅包含执行导入所需的基本要素的 Web 配置版本。到目前为止,我已经删除了与创建、保存和删除项目和版本相关的所有事件。我还从 web 配置中的主数据库元素以及任何自定义事件、时间表和搜索配置中删除了历史引擎和系统索引声明。我希望还有很多其他的东西我可以删除/禁用以提高性能。管道?时间表?
您有哪些优化技巧?
【问题讨论】: