在我们基于 sitecore 6.6.0 (rev. 130404) 的项目中,我们需要将数据从旧系统的数据库迁移到 sitecore 数据库。我们需要迁移大约 650,000 个对象。旧数据库中的这些对象中的每一个都将在主数据库中创建大约 4 个站点核心项目。所以这是一个相当大的数据集正在迁移。
我们已将 sitecore API 与 Windows 应用程序连接起来,并从该应用程序运行数据迁移逻辑。在数据迁移开始时,速度相当快,每秒大约有 4 个对象被传输到 sitecore 主数据库。前 10,000 个对象只用了 40 分钟。按照这个速度,可以预测在 7 小时内将迁移 100,000 个对象。
但问题是随着时间的推移,事情变得越来越缓慢。在迁移了大约 100,000 个对象后,现在仅迁移 30,000 个对象需要大约 7 个小时。我什至不时重建 sitecore 数据库索引,如性能调整指南中所述。我们也不执行任何站点核心查询来查找新创建的站点核心项目的放置位置。当我们的数据迁移发生时,没有任何站点核心代理或 lucene 索引更新操作正在运行。
这是数据迁移逻辑开头的代码:
using (new Sitecore.SecurityModel.SecurityDisabler())
using (new Sitecore.Data.Proxies.ProxyDisabler())
using (new Sitecore.Data.DatabaseCacheDisabler())
using (new Sitecore.Data.BulkUpdateContext())
这种缓慢的原因可能是站点核心数据库索引的增长。我不是 SQL 专家,但经过一番阅读,我得到了一份关于索引操作统计的报告。我不确定这些数字是否表明我们的问题的原因。
有比我更好的 sitecore/sql 知识的人可以帮忙吗?
编辑:经过更多的挖掘,我得到了 sql server 锁存器的统计信息(不太了解这些)。
谢谢