|
Как быстро удалить 500000 документов? | ☑ | ||
---|---|---|---|---|
0
Азат
20.09.20
✎
17:12
|
Собственно, суть
Дано - компьютер типа i3/4Gb/120Gb SSD Файловая база 1С8, одного из видов документов примерно 600000-700000 штук (довольно простой документ, нет никаких движений по регистрам, просто документ). Для ускорения нужно удалить примерно 500 - 550 тысяч штук. Проблема в том, что компьютер работает 24 * 365 и остановить его больше, чем на 40-60 минут, нереально. Собственно, какие могут быть идеи? Сейчас думаю над: 1) Удаление в транзакции по 1000 штук 2) Выгрузить в файл последние тысяч 50 штук, удалить документ из конфы, сжать конфу, вернуть документ в конфу и загрузить 50 тысяч доков. Что еще можете предложить? Спасибо! |
|||
1
Aleksey
20.09.20
✎
17:13
|
удляешь как? Если простой документ то без контроля ссылочной целостности должно быть быстро
|
|||
2
Andreyyy
20.09.20
✎
17:14
|
(0) Зачем останавливать компьютер (работу) ?
Удаляйте не торопясь ... чтобы без блокировок. |
|||
3
Азат
20.09.20
✎
17:16
|
(1) Выборка из запроса и дальше - ПолучитьОБъект().Удалить() и все
(2) нельзя. Новый документ вводится каждые максимум 5-10 минут |
|||
4
Азат
20.09.20
✎
17:17
|
+ (0) есть еще вариант - стянуть базу на более быстрый ПК, сделать так и вернуть обратно.
|
|||
5
Провинциальный 1сник
20.09.20
✎
17:20
|
(0) "Файловая база" ... "компьютер работает 24 * 365 " - это феерично вообще.
|
|||
6
Азат
20.09.20
✎
17:21
|
(0) завидуем молча
|
|||
7
Азат
20.09.20
✎
17:22
|
(6) к (5)
|
|||
8
johnnik
20.09.20
✎
17:23
|
Для базы такого размера и в такой режиме работы (24х365) комп неплохо бы побыстрее иметь. i5-9400/16Gb/SSD M.2 NVMe настоятельно рекомендую
|
|||
9
Конструктор1С
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) обычный киоск, который не закрывается никогда |
|||
18
hhhh
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 или ЕРП. Ну тогда удачи. Обычно в Киосках Розница или УТ в РИБе. И второе из них очень редко. |
|||
22
Immortal
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 нет. Как раз когда начинаются жаловаться что тормоза начались произвожу свертку по выше указанной схеме. |
|||
27
Конструктор1С
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) ну.., если ручками по ночам делать, то наверно можешь и задолбаться. Даже наверняка задолбаешься :)
а если фоновые задания.. настроить расписания.. первое фоновое задание - помечать на удаление эти документы, скажем, старше полугода (/месяца, квартала, года / нужное подчеркнуть). второе фоновое задание - удалять эти помеченные документы. и тогда забыть можно не на два года, а наверно навсегда. |
|||
32
lodger
21.09.20
✎
14:54
|
(31) главное при этом - не пытаться пометить и удалить сразу всё.
работать надо порциями. выбрать и уничтожить первые N штук среди помеченных на удаление. повторять раз в 5 минут, пока есть что уничтожить, неуничтожимое класть в РС-фильтр, чтобы (0) было что поделать на выходных и отфильтровать из выборок. если выбрать и уничтожить вернуло 0, тогда выполнять второй метод: выбрать первые N штук и пометить на удаление. |
|||
33
ChMikle
21.09.20
✎
14:55
|
(0) Ели есть возможность выгрузить в SQL и оттуда уже запросами удалить
|
|||
34
Garykom
гуру
21.09.20
✎
15:06
|
(0) >2) Выгрузить в файл последние тысяч 50 штук, удалить документ из конфы, сжать конфу, вернуть документ в конфу и загрузить 50 тысяч доков.
Документ скопируй в конфигураторе, перенеси туда 50 штук нужных далее сам понимаешь |
|||
35
Garykom
гуру
21.09.20
✎
15:07
|
(34)+ Причем если есть ссылки на этот вид документа то можно и их сохранить.
|
|||
36
GANR
21.09.20
✎
15:10
|
Если ничего на документ не ссылается, то ДТ-шник в PostgreSQL и truncate table к основной таблице документа и табличным частям, в (22) примерно это советуют. Отработает мгновенно. (0) Почему не хочешь так сделать?
|
|||
37
Eiffil123
21.09.20
✎
15:17
|
(0) отключить итоги, удалить записи из регистров. Далее в транзакции можно по 5тыс удалять, можно по 1000 обработкой без контроля целостности. Быстрее штатными средствами не получится.
|
|||
38
ptiz
21.09.20
✎
15:17
|
(30) Всё равно непонятно, к чему спешка. Настроил планировщик в винде, или фоновое - само будет чиститься.
|
|||
39
MyNick
21.09.20
✎
15:24
|
(0)
Идеи в том, что 1. 600 тыс документов это не много. Если тормозят запросы, накидывай индексы на поля, участвующие в основных отборах и соединениях. 2. Не понятно, в чем проблема запустить автообработку, которая потихоньку будет эти документы удалять (правда потом сжатие таблиц потребуется и переиндексирование) |
|||
40
1CnikPetya
21.09.20
✎
15:39
|
(19) Хм. Кажется, 1С для таких ситуаций что-то придумала в свое время. О, регистры накопления :)
|
|||
41
Азат
21.09.20
✎
16:36
|
(22), (33) да, спасибо, так и сделаю - подготовил виртуалку, туда буду переносить по одной
|
|||
42
Азат
21.09.20
✎
16:39
|
всем спасибо, тему можно закрывать :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |