将数据迁移到Sitecore CMS时的优化提示

Chr*_*lid 17 sitecore sitecore6

我目前面临的任务是将自定义CMS实施中的大约200K项目导入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数据库元素以及任何自定义事件,日程表和搜索配置中删除了历史引擎和系统索引声明.我希望有很多其他东西我可以去删除/禁用以提高性能.管道?时间表?

你有什么优化技巧?

Mar*_*idy 15

顺便说一句,BulkUpdateContext()是一个非常具有误导性的名称 - 因为它确实提高了项目创建速度,而不是项目更新速度.但正如你也指出的那样,它大大提高了你的导入速度:-)

自从我写这篇文章以来,我在进行导入时为我的常规例程添加了一些新东西.

  • 定期缩小数据库.它们往往变得庞大而笨重.去做这个; 首先转到Sitecore控制面板 - >数据库,然后选择"清理数据库".在此之后,在SQL服务器上执行常规ShrinkDB
  • 禁用索引,尤其是在导入"主"数据库时.有关参考,请参阅http://intothecore.cassidy.dk/2010/09/disabling-lucene-indexes.html
  • 尽量不要导入到"master"中..你通常会发现导入"web"要快得多,主要是因为这个数据库不是(默认情况下)连接到HistoryManager或其他小工具

如果你真的很冒险,那么你可以尝试一下,我一直在考虑尝试自己,但从来没有去过.他们可能会工作,但我不能保证他们会:-)

  • 尝试从App_Config/FieldTypes.config中删除所有字段类型.这里的理论是,这应该基本上禁用Sitecore对这些字段内容的所有特殊处理(比如更新LinkDatabase等).完成导入后,您需要手动触发LinkDatabase的重建,但这是一个相对较小的代价

希望这个对你有帮助 :-)

  • 导入到网络?那么下次他点击发布按钮会发生什么......? (2认同)