УТ 11.5 дубликаты ключей аналитики номенклатуры
Всем доброго дня!
Подскажите, как можно решить такую проблему.
Есть старая база УТ, в ней ключей аналитики учёта номенклатуры порядка 14млн записей, из них почти все 14 это дубликаты.
Делаю стандартную обработку через форму - удаление дублей, она помечает их на удаление.
Но само удаление такого количества происходит очень долго 1000 в минуту, причём на сервере 2xGold5111 300Гб оперативки, пробовал и файловый и серверный вариант.
Может есть какая-то хитрость, как обработать эти дубли быстрее?
Подскажите, как можно решить такую проблему.
Есть старая база УТ, в ней ключей аналитики учёта номенклатуры порядка 14млн записей, из них почти все 14 это дубликаты.
Делаю стандартную обработку через форму - удаление дублей, она помечает их на удаление.
Но само удаление такого количества происходит очень долго 1000 в минуту, причём на сервере 2xGold5111 300Гб оперативки, пробовал и файловый и серверный вариант.
Может есть какая-то хитрость, как обработать эти дубли быстрее?
Найденные решения
Есть хитрый способ, но нужны навыки работы со строками и файлами, на любом языке
В типовых есть выгрузка в дамп для загрузки в облако.
Дамп это zip архив с кучей xml
Одна XML содержит один тип метаданных.
Находим XML с ключами аналитики, парсим его, проверяем пометку удаления и гуид. Гуид ищем во всех оставшихся файлах дампа, если нашли - значит ссылки есть.
То, что нужно удалить - прямо вырезаем из XML. Если нужно заменить ссылку - меняем гуид простой заменой подстроки.
Потом скорректированный дамп загружаем обратно и радуемся.
На каком-нибудь питоне будет прям быстро. 1С, кстати, тоже довольно достойно работает по скорости, если работать с XML как со строкой.
P.S. делал подобное лично, мне понравилось, но потребуется немного поразбираться в структуре дампов.
В типовых есть выгрузка в дамп для загрузки в облако.
Дамп это zip архив с кучей xml
Одна XML содержит один тип метаданных.
Находим XML с ключами аналитики, парсим его, проверяем пометку удаления и гуид. Гуид ищем во всех оставшихся файлах дампа, если нашли - значит ссылки есть.
То, что нужно удалить - прямо вырезаем из XML. Если нужно заменить ссылку - меняем гуид простой заменой подстроки.
Потом скорректированный дамп загружаем обратно и радуемся.
На каком-нибудь питоне будет прям быстро. 1С, кстати, тоже довольно достойно работает по скорости, если работать с XML как со строкой.
P.S. делал подобное лично, мне понравилось, но потребуется немного поразбираться в структуре дампов.
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Есть хитрый способ, но нужны навыки работы со строками и файлами, на любом языке
В типовых есть выгрузка в дамп для загрузки в облако.
Дамп это zip архив с кучей xml
Одна XML содержит один тип метаданных.
Находим XML с ключами аналитики, парсим его, проверяем пометку удаления и гуид. Гуид ищем во всех оставшихся файлах дампа, если нашли - значит ссылки есть.
То, что нужно удалить - прямо вырезаем из XML. Если нужно заменить ссылку - меняем гуид простой заменой подстроки.
Потом скорректированный дамп загружаем обратно и радуемся.
На каком-нибудь питоне будет прям быстро. 1С, кстати, тоже довольно достойно работает по скорости, если работать с XML как со строкой.
P.S. делал подобное лично, мне понравилось, но потребуется немного поразбираться в структуре дампов.
В типовых есть выгрузка в дамп для загрузки в облако.
Дамп это zip архив с кучей xml
Одна XML содержит один тип метаданных.
Находим XML с ключами аналитики, парсим его, проверяем пометку удаления и гуид. Гуид ищем во всех оставшихся файлах дампа, если нашли - значит ссылки есть.
То, что нужно удалить - прямо вырезаем из XML. Если нужно заменить ссылку - меняем гуид простой заменой подстроки.
Потом скорректированный дамп загружаем обратно и радуемся.
На каком-нибудь питоне будет прям быстро. 1С, кстати, тоже довольно достойно работает по скорости, если работать с XML как со строкой.
P.S. делал подобное лично, мне понравилось, но потребуется немного поразбираться в структуре дампов.
(13) что там, порядка 10-12 дней получится у ТС при заявленных параметрах?
Прямыми запросами будет быстрее, конечно, но будут проблемы с контролем целостности и заменой ссылок
Способ через дамп сработает за несколько минут, особенно если заранее составить пары гуидов для замены
Прямыми запросами будет быстрее, конечно, но будут проблемы с контролем целостности и заменой ссылок
Способ через дамп сработает за несколько минут, особенно если заранее составить пары гуидов для замены
(14)я обрабатывал подобным образом дампы в 10 запаковынных Гигабайт (они же порядка 150 распакованных), на 1Се. Не помню, чтобы весь процесс(с программной распаковкой/запаковкой дампа обратно) занимал больше пары часов.
На более быстрых языках сработает ещё быстрее, в этом плюс этого способа, что можно хоть на C алгоритм написать)
На более быстрых языках сработает ещё быстрее, в этом плюс этого способа, что можно хоть на C алгоритм написать)
Если есть чем удалять (наверное что то по типу обработки "Поиск и замена значений"), то удалять нужно через несколько потоков. Отбираете несколько пачек, например по 20 000 ссылок и запускаете несколько фоновых заданий. Например 5 штук. Нужно будет только скорость протестировать. Но вроде как работать именно с большими блоками информации надо именно так. Скорость будет примерно как в одном потоке, может чуть дольше.
(22) А что через ОбъектУдалить() не работает?
Пройдись и пометь на удаление все элементы. Точно так же, через фоновые задания.
Потом переработай написанный код под непосредственно удаление.
Оберни в попытку само удаление.
Запусти.
Там где ссылок на другие объекты нет, сразу удалит. С остальными работай через что-нибудь по типу найтиСсылки(). После того как удалишь без ссылок.
Пройдись и пометь на удаление все элементы. Точно так же, через фоновые задания.
Потом переработай написанный код под непосредственно удаление.
Оберни в попытку само удаление.
Запусти.
Там где ссылок на другие объекты нет, сразу удалит. С остальными работай через что-нибудь по типу найтиСсылки(). После того как удалишь без ссылок.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот