我目前面临的任务是将自定义CMS实施中的大约200K项目导入Sitecore。我创建了一个简单的导入页面,它使用Entity Framework连接到外部SQL数据库,并创建了所有必需的数据模板。
在测试导入大约5K项目时,我意识到我需要找到一种方法来使导入运行更快,所以我开始寻找一些有关为此目的优化Sitecore的信息。我的结论是,没有太多具体信息,所以我想分享我发现的内容,并为其他人提供进一步优化的基础。我的目标是为Sitecore创建某种维护模式,可以在导入大量数据时使用。
我找到的最有用的信息是Mark Cassidy的博文http://intothecore.cassidy.dk/2009/04/migrating-data-into-sitecore.html。在这篇文章的底部,他提供了一些关于何时运行导入的提示。
我从这个列表中注意到的第一件事是BulkUpdateContext类,因为我从未听说过它。我很快就明白为什么在SND论坛和PDF文档中搜索没有回复。所以想象一下,当我真正测试它并发现它可以将项目创建/删除改进至少十倍时,我感到惊讶!
我接下来要看的第一点是,他基本上建议创建一个只包含执行导入所需的基本要素的Web配置版本。到目前为止,我已删除了与创建,保存和删除项目和版本相关的所有事件。我还从web配置中的master数据库元素以及任何自定义事件,日程表和搜索配置中删除了历史引擎和系统索引声明。我希望有很多其他东西我可以去删除/禁用以提高性能。管道?时间表?
您有哪些优化提示?
答案 0 :(得分:15)
顺便提一下,BulkUpdateContext()是一个非常具有误导性的名称 - 因为它确实提高了项目创建的速度,而不是项目更新速度。但正如你也指出的那样,它大大提高了你的导入速度: - )
自从我写这篇文章以来,我在进行导入时为正常的例程添加了一些新东西。
如果你真的很冒险,那么你可以尝试尝试我自己一直在考虑尝试,但从来没有去过。他们可能会工作,但我不能保证他们会: - )
希望这有点帮助: - )
答案 1 :(得分:1)
我猜你已经知道了,但是将代码放在SecurityDisabler()块中可能会加速。
我会更担心Sitecore如何处理这么多数据...假设你只进行一次导入,谁关心这个过程需要多长时间。这会经常发生吗?