关于在Kentico10中快速大规模删除用户

问题描述 投票:0回答:3

我想在Kentico10中删除超过一百万个用户信息。

我尝试使用UserInfoProvider.DeleteUser()删除它; (请参阅以下文档),但是通过简单的计算,预计将需要近一年的时间。https://docs.kentico.com/api10/configuration/users#Users-Deletingauser

因为这是一个简单的计算,所以我认为它实际上要短一些,但是仍然需要时间。还有其他短时间删除用户的方法吗?

kentico
3个回答
1
投票

当然,在执行任何此操作之前,请确保已备份数据库。

取决于所使用的功能,您可以逃脱一条SQL语句。由于用户对多个其他表的引用很复杂,因此SQL语句可能会变得非常复杂,您需要确保在删除实际用户记录之前先删除其他引用。

我强烈建议您使用API​​方法,并通过API删除用户,这样它会自动为您删除所有引用。在您的API调用中,请确保将以下的delete操作包装起来,以便它停止记录事件和其他不需要的劳动密集型活动。

using (var context = new CMSActionContext())
{
    context.DisableAll();
    // delete your user
}

在您的代码中,我一次只会选择前100名左右,并批量删除它们。假设您不需要一次完成所有操作,则可以让计划的任务运行自定义代码一周,然后查看您的位置。

如果其他所有方法都失败,请找出如何删除用户和70多个外键引用的方法,您会很高兴。


0
投票

为什么不使用SQL查询将其删除? -我相信会更快。


0
投票

version 10开始存在批量删除功能。

UserInfoProvider具有BulkDelete方法。实际上,从AbstractInfoProvider继承的任何InfoProvider对象都具有BulkDelete方法。

© www.soinside.com 2019 - 2024. All rights reserved.