gpt4 book ai didi

sql-server - Sitecore - 添加大号时性能越来越低。项目

转载 作者:行者123 更新时间:2023-12-03 17:40:34 25 4
gpt4 key购买 nike

在我们基于 sitecore 6.6.0(修订版 130404)的项目中,我们需要将数据从旧系统的数据库迁移到 sitecore 数据库。我们需要迁移大约 650,000 个对象。来自旧数据库的这些对象中的每一个都将在主数据库中创建大约 4 个站点核心项目。因此,要迁移的数据集相当大。

我们已将 sitecore API 与 Windows 应用程序连接起来,并从该应用程序运行数据迁移逻辑。在数据迁移开始时,速度相当快,每秒大约有 4 个对象被传输到 sitecore 主数据库。前 10,000 个对象只用了 40 分钟。按照这一速度,人们可以预测在 7 小时内将迁移 100,000 个对象。

但问题是随着时间的推移,事情会变得越来越慢。在迁移了大约 100,000 个对象后,现在仅迁移 30,000 个对象需要大约 7 个小时。正如性能调整指南中所述,我什至不时重建 sitecore 数据库索引。我们也不执行任何 sitecore 查询来查找放置新创建的 sitecore 项目的位置。当我们的数据迁移发生时,没有运行 sitecore 代理或 lucene 索引更新操作。

下面是数据迁移逻辑开头的代码:

using (new Sitecore.SecurityModel.SecurityDisabler())
using (new Sitecore.Data.Proxies.ProxyDisabler())
using (new Sitecore.Data.DatabaseCacheDisabler())
using (new Sitecore.Data.BulkUpdateContext())

这种缓慢的原因可能是 sitecore 数据库索引的增长。我不是 SQL 专家,但经过一些阅读后,我得到了一份关于索引运行统计的报告。我不确定这些数字是否表明我们问题的原因。

Index statistics (some tables were removed from the statistics report to save space)

有比我更了解 sitecore/sql 的人可以帮助解决这个问题吗?

编辑:经过更多挖掘后,我得到了 sql server 锁存器的统计信息(不太了解那些)。

SQL server latch statistics

谢谢

最佳答案

经过几天乏味的调查,我找到了导致这种缓慢的根本原因。这不是因为数据库索引。问题是 Database.GetItem(<item path>) sitecore 内部的方法调用 MediaCreator类(class)。 (我们的数据迁移包括创建图像项)

在我们网站的 sitecore 树中,有些项目下有相当多(数万)的子项。尽管不建议使用大编号。 sitecore 中的项目,这是我们项目的正确设计。如果我们做 GetItem(<item path>)调用这些子项目之一,返回该项目需要很长时间。显然GetItem()使用项目路径比通过 ID 获取要慢得多。不幸的是,我们无法控制这种情况,因为 sitecore MediaCreator 使用项目路径来创建媒体项目。

通过使用 dotPeek,我能够调查 sitecore 源代码并创建了一个不使用项目路径的 MediaCreator 类版本 GetItem()数据迁移开始快速运行。

我要从 sitecore 论坛询问是否有任何方法可以在不复制 MediaCreator 的情况下克服这个性能问题源代码。

关于sql-server - Sitecore - 添加大号时性能越来越低。项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17257477/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com