Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Как быстро удалить 500000 документов?

Как быстро удалить 500000 документов?
Я
   Азат
 
20.09.20 - 17:12
Собственно, суть

Дано - компьютер типа i3/4Gb/120Gb SSD
Файловая база 1С8, одного из видов документов примерно 600000-700000 штук (довольно простой документ, нет никаких движений по регистрам, просто документ).
Для ускорения нужно удалить примерно 500 - 550 тысяч штук.
Проблема в том, что компьютер работает 24 * 365 и остановить его больше, чем на 40-60 минут, нереально.

Собственно, какие могут быть идеи?
Сейчас думаю над:
1) Удаление в транзакции по 1000 штук
2) Выгрузить в файл последние тысяч 50 штук, удалить документ из конфы, сжать конфу, вернуть документ в конфу и загрузить 50 тысяч доков.

Что еще можете предложить?
Спасибо!
   Aleksey
 
1 - 20.09.20 - 17:13
удляешь как? Если простой документ то без контроля ссылочной целостности должно быть быстро
   Andreyyy
 
2 - 20.09.20 - 17:14
(0) Зачем останавливать компьютер (работу) ?
Удаляйте не торопясь ... чтобы без блокировок.
   Азат
 
3 - 20.09.20 - 17:16
(1) Выборка из запроса и дальше - ПолучитьОБъект().Удалить() и все
(2) нельзя. Новый документ вводится каждые максимум 5-10 минут
   Азат
 
4 - 20.09.20 - 17:17
+ (0) есть еще вариант - стянуть базу на более быстрый ПК, сделать так и вернуть обратно.
   Провинциальный 1сник
 
5 - 20.09.20 - 17:20
(0) "Файловая база" ... "компьютер работает 24 * 365 " - это феерично вообще.
   Азат
 
6 - 20.09.20 - 17:21
(0) завидуем молча
   Азат
 
7 - 20.09.20 - 17:22
(6) к (5)
   johnnik
 
8 - 20.09.20 - 17:23
Для базы такого размера и в такой режиме работы (24х365) комп неплохо бы побыстрее иметь. i5-9400/16Gb/SSD M.2 NVMe настоятельно рекомендую
   Конструктор1С
 
9 - 20.09.20 - 17:26
(0) "Для ускорения нужно удалить примерно 500 - 550 тысяч штук"

А почему ты думаешь, что удаление что-то ускорит?
   Обработка
 
10 - 20.09.20 - 17:27
(0)
1. Выгрузи базу и разверни на более быстром компе.
2. На том компе пусть люди работаю без остановки.
3. Но им строго на строго скажи чтоб пока не вводить и редактировать доки прошлого периода максимум сегодня вчера и все.
4. Удали доки в копии.
5. Перенеси через универсальную обработку доки за 2 дня с актуальной базы.
6. Сделай сверку данных.
7 Замени актуальную базу.
Профит!
   Азат
 
11 - 20.09.20 - 17:28
(8) зачем?
(9) потому что тормоза возникают только при работе с этой таблицей
(10) как вариант. Люди работают с доками максимум на 8 часов назад
   Обработка
 
12 - 20.09.20 - 17:30
(9) Как бы мы не говорили но 1С остается системой который зависимость скорости работы от объема данных есть.
Но конечно ему ()Автору бы начать с железа и с переводом в скуль. Но как всегда 1Сник решает все не стой строны.)))
   Азат
 
13 - 20.09.20 - 17:33
(12) в каждом киоске ставить sql? а вы знаете толк в извращениях
   Обработка
 
14 - 20.09.20 - 17:34
Я вот большие базы сворачивают так.

1. Запускаю свертку но только ввод остатков.
2. Переношу данные в чистую базу с даты свертки.
Экономлю иногда время несколько сутками. Вместо 2-3 дней трачу всего лишь 2-3 часа.
   Обработка
 
15 - 20.09.20 - 17:36
(13) В киоска должна стоять розница которая сворачивается раз в пол года или в год ну или в два года.
Киоск или не киоск важно объемы данных! И их безопасность.
   Обработка
 
16 - 20.09.20 - 17:37
+(15) Что за киоск очень интересно? И что за база (конфа)? И какой объем базы файловой?
   Азат
 
17 - 20.09.20 - 17:44
(15) а можно показать закон о киосках, где написано, что "должна стоять розница"?
(16) обычный киоск, который не закрывается никогда
   hhhh
 
18 - 20.09.20 - 17:44
(13) ну если тормоза с этой таблицей, значит там говнокод где-то. Вам нужно просто проанализировать работу с этой таблицей, переписать запросы, зачем всё удалять?
   Азат
 
19 - 20.09.20 - 17:46
(18) вопрос в том, что тупо "Выбрать Сумма(СуммаДокумента) Из Документ.ИмяДокумента Где Дата > Вчера" долговато выполняется
   Азат
 
20 - 20.09.20 - 17:46
+(19) и замечено, что пограничная цифра - это 500 000 документов.
   Обработка
 
21 - 20.09.20 - 17:47
(17) Закона нет. Это просто практично и логично.
Я так понял у вас в киоске стоит КА2 или ЕРП. Ну тогда удачи.
Обычно в Киосках Розница   или УТ в РИБе. И второе из них очень редко.
   Immortal
 
22 - 20.09.20 - 17:48
(0) выгрузить базу в dt
загрузить базу в ms sql
truncate table
выгрузить базу
загрузить базу
   Азат
 
23 - 20.09.20 - 17:51
(21) а где это было написано? нет, стоит самописка, которую я нарисовал, посмотрев несколько конф для розницы, в т.ч. розницу 1.0, решение от бита и тп
В конфе, грубо говоря, 4 справочника, 2 документа и все
   ДенисЧ
 
24 - 20.09.20 - 17:53
настроить риб, в рибе потихоньку удалять, почаще делать обмены
   Обработка
 
25 - 20.09.20 - 17:54
(20) Кстати из своего личного опыта.
У меня есть Сеть Аптек у одного хозяина.
У него 5-6 аптек из них половина работает круглосуточно. Почти как у тебя.
Там у них стоит самописная моя конфа.
Раз в два года я им их делаю свертку.
При этом они работают без остановки.
Я делаю из ЦБ-копии свертку отпочковываю  все 5-6 ПБ новые базы.
Потом как я уже выше сказал переношу данные за день в каждой аптеке.
Итог ни одна из аптека не останавливается больше чем на 10-15 минут.
Свертку делаю не спеша проверяя все данные дома. У всех профит.
   Обработка
 
26 - 20.09.20 - 17:56
+ (25) Получатся у нас одинаково все почти.
У них обычные компы даже SSD нет.
Как раз когда начинаются жаловаться что тормоза начались произвожу свертку по выше указанной схеме.
   Конструктор1С
 
27 - 20.09.20 - 18:12
(11) тормоза могут возникать по массе причин
(19) такой запрос легко оптимизировать
   Гость из Мариуполя
 
28 - 20.09.20 - 19:25
(0) на инфостарте где-то видел удаление помеченных на удаление объектов фоновым заданием в немонопольном режиме.
   Гость из Мариуполя
 
29 - 20.09.20 - 19:34
собственно, вот
http://catalog.mista.ru/1c/articles/196449/

Маленький вопросик только в том, что надо ли помечать на удаление сразу 500000? целесообразно ли?
Слона можно ведь сожрать и по кусочкам, тем более тебе не горит, никто взашей не толкает.
Помечай кусочками, запускай фоновое по ночам под утро в самый волчий час - и за недельку все вычистится без напряга и незаметно для юзеров.
Но это чисто мое имхо...
   Азат
 
30 - 20.09.20 - 21:49
(29) киосков много, если каждый делать по нескольку ночей, могу задолбаться. А так основная идея - сделать и забыть на два года
 
 Рекламное место пустует
   Гость из Мариуполя
 
31 - 21.09.20 - 14:47
(30) ну.., если ручками по ночам делать, то наверно можешь и задолбаться. Даже наверняка задолбаешься :)
а если фоновые задания.. настроить расписания..
первое фоновое задание - помечать на удаление эти документы, скажем, старше полугода (/месяца, квартала, года / нужное подчеркнуть).
второе фоновое задание - удалять эти помеченные документы.
и тогда забыть можно не на два года, а наверно навсегда.
   lodger
 
32 - 21.09.20 - 14:54
(31) главное при этом - не пытаться пометить и удалить сразу всё.
работать надо порциями.

выбрать и уничтожить первые N штук среди помеченных на удаление.
повторять раз в 5 минут, пока есть что уничтожить, неуничтожимое класть в РС-фильтр, чтобы (0) было что поделать на выходных и отфильтровать из выборок.
если выбрать и уничтожить вернуло 0, тогда выполнять второй метод:
выбрать первые N штук и пометить на удаление.
   ChMikle
 
33 - 21.09.20 - 14:55
(0) Ели есть возможность выгрузить в SQL и оттуда уже запросами удалить
   Garykom
 
34 - 21.09.20 - 15:06
(0) >2) Выгрузить в файл последние тысяч 50 штук, удалить документ из конфы, сжать конфу, вернуть документ в конфу и загрузить 50 тысяч доков.

Документ скопируй в конфигураторе, перенеси туда 50 штук нужных далее сам понимаешь
   Garykom
 
35 - 21.09.20 - 15:07
(34)+ Причем если есть ссылки на этот вид документа то можно и их сохранить.
   GANR
 
36 - 21.09.20 - 15:10
Если ничего на документ не ссылается, то ДТ-шник в PostgreSQL и truncate table к основной таблице документа и табличным частям, в (22) примерно это советуют. Отработает мгновенно. (0) Почему не хочешь так сделать?
   Eiffil123
 
37 - 21.09.20 - 15:17
(0) отключить итоги, удалить записи из регистров. Далее в транзакции можно по 5тыс удалять, можно по 1000 обработкой без контроля целостности. Быстрее штатными средствами не получится.
   ptiz
 
38 - 21.09.20 - 15:17
(30) Всё равно непонятно, к чему спешка. Настроил планировщик в винде, или фоновое - само будет чиститься.
   MyNick
 
39 - 21.09.20 - 15:24
(0)
Идеи в том, что
1. 600 тыс документов это не много. Если тормозят запросы, накидывай индексы на поля, участвующие в основных отборах и соединениях.
2. Не понятно, в чем проблема запустить автообработку, которая потихоньку будет эти документы удалять (правда потом сжатие таблиц потребуется и переиндексирование)
   1CnikPetya
 
40 - 21.09.20 - 15:39
(19) Хм. Кажется, 1С для таких ситуаций что-то придумала в свое время. О, регистры накопления :)
   Азат
 
41 - 21.09.20 - 16:36
(22), (33) да, спасибо, так и сделаю - подготовил виртуалку, туда буду переносить по одной
   Азат
 
42 - 21.09.20 - 16:39
всем спасибо, тему можно закрывать :)


Список тем форума
Рекламное место пустует  Рекламное место пустует
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа.
Фредерик Брукс-младший
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.