О скором массовом удалении пользователей в Kentico10 - PullRequest
0 голосов
/ 20 февраля 2020

Я хочу удалить более 1 миллиона информации о пользователях в Kentico10.

Я пытался удалить ее с помощью UserInfoProvider.DeleteUser (); (см. следующую документацию), но ожидается, что это займет около одного года с простым расчетом. https://docs.kentico.com/api10/configuration/users#Users -Deletingauser

Поскольку это простой расчет, я думаю, что он на самом деле немного короче, но все же требует времени. Есть ли другой способ удалить пользователей за короткое время?

Ответы [ 3 ]

1 голос
/ 20 февраля 2020

Конечно, прежде чем делать что-либо, убедитесь, что у вас есть резервная копия вашей базы данных.

В зависимости от используемых вами функций, вы можете уйти с помощью оператора SQL. Из-за сложности ссылок пользователя на несколько других таблиц оператор SQL может быть довольно сложным, и вам нужно обязательно удалить другие ссылки перед удалением фактической записи пользователя.

I ' Очень рекомендую подход API и удалять пользователей через API, чтобы он автоматически удалял все ссылки для вас. В своих вызовах API убедитесь, что вы добавили действие удаления в следующее, чтобы оно не регистрировало события и другие трудоемкие действия, которые не нужны.

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

В вашем коде я бы выбирал только первые 100 или около того и удалял их партиями. Предполагая, что вам не нужно делать это все за один прогон, вы можете позволить запланированному заданию запустить ваш пользовательский код в течение недели и посмотреть, где вы находитесь.

Если ничего не помогло, подумайте, как удалить пользователя и более 70 ссылок на внешние ключи, и вы получите золотую медаль.

0 голосов
/ 21 февраля 2020

Функциональность массового удаления существует, начиная с версии 10 .

UserInfoProvider имеет метод BulkDelete. Фактически любой объект InfoProvider, унаследованный от AbstractInfoProvider, имеет метод BulkDelete .

0 голосов
/ 20 февраля 2020

Почему бы вам не удалить их с помощью запроса SQL? - Я верю, что это будет намного быстрее.

...