【问题标题】:Optimisation tips when migrating data into Sitecore CMS将数据迁移到 Sitecore CMS 时的优化提示
【发布时间】: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 配置中的主数据库元素以及任何自定义事件、时间表和搜索配置中删除了历史引擎和系统索引声明。我希望还有很多其他的东西我可以删除/禁用以提高性能。管道?时间表?

您有哪些优化技巧?

【问题讨论】:

    标签: sitecore sitecore6


    【解决方案1】:

    顺便说一句,BulkUpdateContext() 是一个非常容易引起误解的名称 - 因为它确实提高了项目 创建 的速度,而不是项目的更新速度。但正如您也指出的那样,它极大地提高了您的导入速度:-)

    自从我写了那篇文章后,我在进行导入时的日常工作中添加了一些新东西。

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

    如果您真的很喜欢冒险,那么您可以尝试一件事,我一直在考虑自己尝试,但一直没有时间。他们可能会工作,但我不能保证他们会:-)

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

    希望这会有所帮助:-)

    【讨论】:

    • 好问题,好答案,非常有用的信息:)。谢谢!
    • 导入网络?那么下次他点击“发布”按钮时会发生什么……?
    • @Bryan 我认为他的意思是在测试导入时导入到 Web 数据库,然后在您满意时针对主数据库运行它
    • 为什么选择 ShrinkDB?除非磁盘对您来说是个问题,否则您只是在为一些昂贵的文件增长操作做好准备。
    【解决方案2】:

    我猜你已经成功了,但是将代码放在 SecurityDisabler() 块中也可以加快速度。

    我会更担心 Sitecore 如何处理这么多数据...假设您只执行一次导入,谁在乎这个过程需要多长时间。这会经常发生吗?

    【讨论】:

    • 是的,它已经在 SecurityDisabler 块中运行。 Sitecore 性能绝对是我担心的事情,但很早的测试表明它会处理它。导入只是从旧 CMS 迁移的一次,但我会在调整模板时运行几次。
    • 200K 项目实际上不会对 Sitecore 安装造成问题,只要遵守基本规则即可。如果可能,一根树枝上的叶子不要超过 100 片,以此类推。但即便如此;如果源 CMS 是基于一些难以进行深度分支的东西,那么在其之上添加一个 lucene 索引将使 Sitecore 能够轻松地导航结构;只是避免对导入的内容进行深入的 Sitecore 查询表达式,并尽量远离 XSLT
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-22
    • 1970-01-01
    • 2016-01-16
    • 1970-01-01
    • 2011-01-08
    • 1970-01-01
    • 2019-02-10
    相关资源
    最近更新 更多