Среда, 16.10.2024, 10:14
Главная Регистрация RSS
Приветствую Вас, Гость
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Удаление объектов с контролем. Порционное удаление.
nclockworkerДата: Среда, 21.04.2021, 20:07 | Сообщение # 1
Генерал-майор
Группа: Пользователи
Сообщений: 437
Репутация: 342
Статус: Оффлайн

Обратил внимание, что при порционном удалении объектов с контролем ссылочной целостности, если связанные объекты находятся в разных порциях, то удаления не происходит. Например есть справочник Файлы и справочник ВерсииФайлов. Оба элемента помечены на удаление, один ссылается на другой, оба присутствуют в общем списке. Запустил удаление порциями. Через двое суток всё завершилось, но эти элементы остались нетронутыми. Запустил классическое выборочное удаление и они удалились.
Возможно есть смысл проверить работу механизма на более маленьких порциях.

Может быть есть смысл реализовать параметр - "рекурсивное добавление кандидатов". Т.е. если в основной выборке добавлен элемент на который есть список ссылающихся объектов помеченных на удаление и все они без исключения помечены на удаление, то все их добавлять в основную выборку. Повторить поиск для новой выборки с добавленными кандидатами до тех пор пока результат не станет пустым или не попадется элемент не помеченный на удаление. Если результат пустой и не осталось ссылающихся объектов, то можно пытаться удалять объект с кандидатами, если нашелся один объект мешающий удалению, то всю ветку взаимосвязей помечаем как не удаляемую.
 
tormozitДата: Среда, 21.04.2021, 21:01 | Сообщение # 2
Генералиссимус
Группа: Администраторы
Сообщений: 6396
Репутация: 165
Статус: Оффлайн
По поводу не удаления связанных объектов, попавших в разные порции - так и задумано. Ведь смысл порционного анализа - поставить на первые места ограничение пикового потребления ресурсов (память и тяжелые запросы к БД) и сокращение длительности одного анализа, а на последнее естественно - полноту анализа. Если в анализируемой порции есть ссылки наружу, то для их анализа потребуются дополнительные ресурсы (память и тяжелые запросы к БД).

По дополнению порции вопрос не простой. Ведь у нас есть очень затратная операция - поиск ссылок на кандидаты в БД. Дополнить порцию без получения из БД всех ссылок на новых кандидатов порции нельзя. Поэтому нужно будет сначала собрать всех возможных новых кандидатов и только потом выполнить поиск ссылок на них в БД и только потом их можно будет добавить в порцию. Создал задачу на подумать https://www.hostedredmine.com/issues/926259
 
  • Страница 1 из 1
  • 1
Поиск: