将数据迁移到Sitecore CMS时的优化提示
我目前面临的任务是将大约20万个项目从定制CMS实现导入Sitecore。我创建了一个简单的导入页面,该页面使用EntityFramework连接到外部SQL数据库,并创建了所有必需的数据模板 在大约5K个项目的测试导入过程中,我意识到我需要找到一种方法使导入运行得更快,因此我开始寻找一些关于为此优化Sitecore的信息。我的结论是,没有太多的具体信息,所以我想分享我的发现,并为其他人进一步优化做准备。我的目标是为Sitecore创建某种维护模式,以便在导入大量数据时使用 我在马克·卡西迪的博客上找到了最有用的信息。在这篇文章的底部,他提供了一些关于何时运行导入的提示将数据迁移到Sitecore CMS时的优化提示,sitecore,sitecore6,Sitecore,Sitecore6,我目前面临的任务是将大约20万个项目从定制CMS实现导入Sitecore。我创建了一个简单的导入页面,该页面使用EntityFramework连接到外部SQL数据库,并创建了所有必需的数据模板 在大约5K个项目的测试导入过程中,我意识到我需要找到一种方法使导入运行得更快,因此我开始寻找一些关于为此优化Sitecore的信息。我的结论是,没有太多的具体信息,所以我想分享我的发现,并为其他人进一步优化做准备。我的目标是为Sitecore创建某种维护模式,以便在导入大量数据时使用 我在马克·卡西迪的博
- 如果要迁移大量数据,请尝试禁用尽可能多的Sitecore事件处理程序以及其他任何可以避免的方法
- 使用BulkUpdateContext()
- 别忘了你的目标语言
- 如果可以,将字段设置为共享和未设置版本。这将有助于提高迁移执行速度
你有哪些优化技巧 顺便说一句,BulkUpdateContext()是一个非常容易引起误解的名称,因为它确实提高了项目创建速度,而不是项目更新速度。但正如您也指出的,它大大提高了导入速度:-) 自从我写了那篇文章之后,我在做导入的时候在我的常规程序中添加了一些新的东西
- 定期缩小数据库。它们往往变得又大又笨重。这样做;首先转到Sitecore控制面板->数据库并选择“清理数据库”。在此之后,在SQL server上定期执行ShrinkDB
- 禁用索引,尤其是在导入“主”数据库时。有关参考,请参阅
- 但是,请尽量不要导入到“master”中。。您通常会发现导入“web”的速度要快得多,主要是因为该数据库(默认情况下)未连接到HistoryManager或其他小工具
- 尝试从App_Config/FieldTypes.Config中删除所有字段类型。这里的理论是,这实际上应该禁用Sitecore对这些字段内容的所有特殊处理(如更新链接数据库等)。导入完成后,您需要手动触发LinkDatabase的重建,但这是一个相对较小的代价
希望这有点帮助:-)我猜您已经找到了这一点,但是将代码放在SecurityDisabler()块中也可以加快速度
我会更担心Sitecore如何处理这么多数据。。。假设你只导入一次,谁在乎这个过程需要多长时间。这会经常发生吗?好问题,好答案,非常有用的信息:)。谢谢导入到web?那么下次他点击发布按钮时会发生什么@Bryan我认为他的意思是在测试导入时导入到web数据库,然后在您满意的情况下对主数据库运行它为什么要使用ShrinkDB?除非磁盘是您的问题,否则您只是在为自己设置一些昂贵的文件增长操作。是的,它已经在SecurityDisabler块中运行。Sitecore性能无疑是我所担心的问题,但很早的测试表明它会处理好它。导入是为了一次性从旧CMS迁移,但我会在调整模板时运行几次。只要遵守基本规则,200K项目实际上不会给Sitecore安装带来问题。如果可能,树枝上的叶子不超过100片,以此类推。但即便如此;如果源CMS基于一些会使深度分支变得困难的东西,那么在上面加上lucene索引将使Sitecore能够轻松地导航结构;只需避免导入内容上的深层Sitecore查询表达式,并尽量远离XSLT即可