Всем доброго дня!
Подскажите, как можно решить такую проблему.
Есть старая база УТ, в ней ключей аналитики учёта номенклатуры порядка 14млн записей, из них почти все 14 это дубликаты.
Делаю стандартную обработку через форму - удаление дублей, она помечает их на удаление.
Но само удаление такого количества происходит очень долго 1000 в минуту, причём на сервере 2xGold5111 300Гб оперативки, пробовал и файловый и серверный вариант.
Может есть какая-то хитрость, как обработать эти дубли быстрее?
---
Есть хитрый способ, но нужны навыки работы со строками и файлами, на любом языке

В типовых есть выгрузка в дамп для загрузки в облако.
Дамп это zip архив с кучей xml

Одна XML содержит один тип метаданных.
Находим XML с ключами аналитики, парсим его, проверяем пометку удаления и гуид. Гуид ищем во всех оставшихся файлах дампа, если нашли - значит ссылки есть.

То, что нужно удалить - прямо вырезаем из XML. Если нужно заменить ссылку - меняем гуид простой заменой подстроки.

Потом скорректированный дамп загружаем обратно и радуемся.

На каком-нибудь питоне будет прям быстро. 1С, кстати, тоже довольно достойно работает по скорости, если работать с XML как со строкой.

P.S. делал подобное лично, мне понравилось, но потребуется немного поразбираться в структуре дампов.
---
Если кому интересно, то удалил в итоге запросом через SQL - 10 секунд.
Все обработки, которые пробовал (штук 10 с инфостарта) особой скорости не добавили по сравнению с типовой.
---
выполнить удаление прямым запросом не предлагать?
---
ага, на часть из этих дубликатов есть ссылки, если только в запросе как-то учесть это
---
почистить ссылки обработкой, это ж можно сделать явно быстрее, чем удалить 14М типовым способом
---
Так поиск и удаление дублей же перекидывает ссылки на один элемент, а второй помечает на удаление, откуда ссылки на удаленные?
---
не, поиск и удаление дублей из администрирования даёт ошибку - слишком много дубликатов.
я про типовую обработку из формы ключи аналитики - заменить дубли ключей аналитики.
---
запустить на ночь, две, три и потерпеть, по описанию, база та еще, еще с ней нахлебаетесь, хитростями, увы, не обойдемся
---
да, моё любимое - 23 релиза для обновление, с дописанным функционалом прямо в конфигурацию ))
---
не фига не понял, где тут про обновление конфы?
если умеете писать запросы sql - postgres , делается на щелчок, я с отбором не умею, могу только полностью очистить нужную таблицу
---
чтобы обновить, надо почистить ключи, без этого типовая обработка по каждому ключу создаёт запись в регистре и там уже время кратно возрастает.
delete from я так-то тоже могу, мне б с контролем целостности
---
ну хоть база на сервере, выяснили. Как вариант, анализ того чего надо удалить, потом непосредственное удаление объектов обработкой, потом тис с удалением не найденных ссылок, и конечно перед этим архив. Я бы так попробовал
---
Есть хитрый способ, но нужны навыки работы со строками и файлами, на любом языке

В типовых есть выгрузка в дамп для загрузки в облако.
Дамп это zip архив с кучей xml

Одна XML содержит один тип метаданных.
Находим XML с ключами аналитики, парсим его, проверяем пометку удаления и гуид. Гуид ищем во всех оставшихся файлах дампа, если нашли - значит ссылки есть.

То, что нужно удалить - прямо вырезаем из XML. Если нужно заменить ссылку - меняем гуид простой заменой подстроки.

Потом скорректированный дамп загружаем обратно и радуемся.

На каком-нибудь питоне будет прям быстро. 1С, кстати, тоже довольно достойно работает по скорости, если работать с XML как со строкой.

P.S. делал подобное лично, мне понравилось, но потребуется немного поразбираться в структуре дампов.
---
Вы к нам с какой планеты? Тут прямая работа с метаданными
---
что там, порядка 10-12 дней получится у ТС при заявленных параметрах?

Прямыми запросами будет быстрее, конечно, но будут проблемы с контролем целостности и заменой ссылок

Способ через дамп сработает за несколько минут, особенно если заранее составить пары гуидов для замены
---
Дружище, ну мы как могли, попытались, може конечно придет гуру и вобьет гвоздь...
---
это реально звучит круто! но какой будет размер дампа для 14 млн записей я даже не представляю
---
Ну дык, проще нанять 10 тыс секретарш
---
я обрабатывал подобным образом дампы в 10 запаковынных Гигабайт (они же порядка 150 распакованных), на 1Се. Не помню, чтобы весь процесс(с программной распаковкой/запаковкой дампа обратно) занимал больше пары часов.
На более быстрых языках сработает ещё быстрее, в этом плюс этого способа, что можно хоть на C алгоритм написать)
---
это ж нужно х3 объема на диске, чтобы обработать.
---
Согласен, места на диске должно быть много.
Ну и сама выгрузка/загрузка дампа какое-то время занимает, естественно
---
Тоже достойный способ, вполне рабочий !
---
Если есть чем удалять (наверное что то по типу обработки "Поиск и замена значений"), то удалять нужно через несколько потоков. Отбираете несколько пачек, например по 20 000 ссылок и запускаете несколько фоновых заданий. Например 5 штук. Нужно будет только скорость протестировать. Но вроде как работать именно с большими блоками информации надо именно так. Скорость будет примерно как в одном потоке, может чуть дольше.
---
да, нужно что-то типа многопоточного удаления справочников, тут нашёл только по документам и то по части
---
А что через ОбъектУдалить() не работает?
Пройдись и пометь на удаление все элементы. Точно так же, через фоновые задания.
Потом переработай написанный код под непосредственно удаление.
Оберни в попытку само удаление.
Запусти.
Там где ссылок на другие объекты нет, сразу удалит. С остальными работай через что-нибудь по типу найтиСсылки(). После того как удалишь без ссылок.
---
Вариантов быстрее по сути нет. Ускоряйте сервер или железо, будет счастье:))
---
Есть вариант заменить ссылки напрямую на SQL, в таблицах в которых наибольшее число ссылок, затем пере-индексировать базу, и завершить процесс обычной обработкой замена значений, но риск испортить базу очень большой. Одно неловкое движение и все.
---
Сделайте новую базу)
зы. для 1с проц с частотой 3.2 (и то не факт что там фикс такой стоит) то еще гавно
---
Заменить обработкой "Замена значений" дубли на рабочие ссылки и затем удалить, другого варианта нет.
процесс может быть не быстрым.
---
Создать новую аналогиную базу и залить туда все даижения через xml обмен. Ключи аналитики загрузяттся только пктуальеык и удалять не прийдется ничего
---
Если кому интересно, то удалил в итоге запросом через SQL - 10 секунд.
Все обработки, которые пробовал (штук 10 с инфостарта) особой скорости не добавили по сравнению с типовой.