将数据迁移到Sitecore CMS时的优化提示 [英] Optimisation tips when migrating data into Sitecore CMS
问题描述
我目前面临着将大约200K个项目从自定义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配置的master database元素以及任何自定义事件、计划和搜索配置中删除了历史引擎和系统索引声明。我预计,为了提高性能,我还可以删除/禁用很多其他功能。管道?日程安排?
您有什么优化提示?
BulkUpdateContext
顺便说一句,BulkUpdateContext()是一个非常容易误导的名称-因为它确实提高了创建项的速度,而不是提高了项更新速度。但正如您也指出的,它极大地提高了您的导入速度:-)
自从我写了那篇帖子以来,我在进行导入时在正常例程中添加了一些新内容。
- 定期收缩您的数据库。它们往往长得又大又笨重。为此,请先转到Sitecore控制面板->数据库,然后选择"清理数据库"。之后,在您的SQL服务器上执行常规ShrinkDB
- 禁用索引,尤其是如果导入到"master"数据库中。参考参见http://intothecore.cassidy.dk/2010/09/disabling-lucene-indexes.html
- 不过,请尽量不要导入到"master"中。您通常会发现导入到"web"要快得多,主要是因为此数据库(默认情况下)没有连接到HistoryManager或其他小工具
如果你真的喜欢冒险,有一件事你可以尝试,我一直在考虑自己试一试,但没能抽出时间来试一试。它们可能会奏效,但我不能保证它们会奏效:-)
- 尝试从App_Config/FieldTypes.config中删除所有字段类型。这里的理论是,这实际上应该禁用Sitecore对这些字段内容的所有特殊处理(如更新LinkDatabase等)。在完成导入时,您需要手动触发LinkDatabase的重建,但这是一个相对较小的代价
希望这会有一点帮助:-)
这篇关于将数据迁移到Sitecore CMS时的优化提示的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!