Имя: Пароль:
1C
 
Удаление 4.5 миллионов строк из РС
0 Ахмадинежад
 
26.05.16
18:19
Сделал через
НЗ = РегистрыСведений.ИмяРС.СоздатьНаборЗаписей();
НЗ.Записать(Истина);

4.5 млн строк в РС

Уже минут 40 жду.

Сервер мощный.

Как думаете, это не на 8+ часов ?
1 Господин ПЖ
 
26.05.16
18:21
хз... в текста insert/update/delete 1с лучше не смотреть - ужасужас
2 Maniac
 
26.05.16
18:21
будешь ждать сутки.
3 Amianna
 
26.05.16
18:24
Гугль нашел, не совсем оно, но лучше чем ничего...

Однажды мы попали в ситуацию, когда нужно было удалить регистр большого объема. Мы, ни о чем не подозревая, запустили нашу обработку и... все ))) Процесс 1С сожрал все ресурсы компьютера и в итоге "вылетел". Регистр мы все же почистили, но история не о том. Как вы уже понимаете новая версия обработки таки умеет работать с большими объемами данных. Реализовано это с помощью транзакций, а если проще, то в обработке следует указать количество элементов транзакции. По поводу количества элементов есть интересные наблюдения:

Тест выполнялся собственно на той самой базе. Количество записей регистра 80000. Вариант базы - файловый, размещена на локальном компьютере.

при количестве элементов транзакции 100 - время выполнения 16 мин;

при количестве элементов транзакции 500 - когда время выполнения дошло до 45 минут прервал тест ибо надоело, в итоге осталось около 25000 записей;

при количестве элементов транзакции 50 - время выполнения 12 мин;

при количестве элементов транзакции 10 - время выполнения 8 мин;

Результаты тестирования говорят сами за себя. Но все же не следует принимать их как самые верные и оптимальные. Думаю при разных вариантах структуры хранения и использования ИБ, версии платформы и прочего они могут отличаться.
4 Господин ПЖ
 
26.05.16
18:25
(3) в лучших домах лондона еще принято распараллеливать процессы
5 Amianna
 
26.05.16
18:25
(0) Я так понимаю, тебе надо было делать пачками удаление в цикле, с обработкой прерывания, если что.
6 antgrom
 
26.05.16
18:25
могут возникнуть блокировки
а так сделал бы запрос , отбирал бы небольшими порциями по какому нибудь параметру в попытке
так надежнее будет
7 mehfk
 
26.05.16
18:26
(0) Прямой запрос спасет отца русской демократии.
8 antgrom
 
26.05.16
18:26
*  в попытке

в смысле - получать по данным из запроса , а удалять в попытке
9 Amianna
 
26.05.16
18:27
Только что в голову пришло, а не быстрее убить регистр вообще, обновить базу, снова вернуть регистр :)
10 Ахмадинежад
 
26.05.16
18:33
полтора часа. все удалилось.
Спасибо за эффект присутствия ))
11 Ахмадинежад
 
26.05.16
18:34
упс, то есть час где-то
12 Господин ПЖ
 
26.05.16
18:34
как скучно стало жить...
13 Господин ПЖ
 
26.05.16
18:34
то ли дело в 7.7 - все на клиенте

сидишь на второй день апдейта и думаешь - наипнется или нет...
14 Московский
 
26.05.16
18:42
(0) Серверная база-то хоть?
15 Лефмихалыч
 
26.05.16
19:13
(0) TRUNCATE TABLE
потом
DBCC REINDEX

быстро, без шума и пыли
16 piter3
 
26.05.16
19:21
удалить  все или часть?
17 Формат
 
26.05.16
19:30
40 минут мало, я как то удалял 700т. строк было меньше 2 часов, если память не изменяет.
18 hhhh
 
26.05.16
20:02
(11) тут регистры ни при чем. Ты просто забыл посмотреть в их процедуры ПриЗаписи и ПередЗаписью.
19 youalex
 
26.05.16
20:57
Судя по коду - полная очистка РС.
TRUNCATE TABLE, да. Плюс еще нужно смотреть, есть ли таблица изменений по этому РС.

Изощренным способом - можно удалить РС из конфы, обновить базу (будет DROP TABLE) - вернуть РС в конфу.
20 Fram
 
26.05.16
21:38
Сервер видать очень "мощный" ))
21 supremum
 
26.05.16
23:28
Недавно сворачивали УПО (Управление Проектной организацией) на 140 гиг. Производительность уперлась в количество транзакция на запись в дисковой системе. Помогла вот такая штука:
http://www.samsung.com/ru/consumer/memory-storage/ssd/950-pro/MZ-V5P512BW

Обычный винт делал 150 транзакций. Серверный райд 0 15000 SAS 750 транзакций на запись. Самсунговская SSD 15000-20000 транзакций на запись. В результате провели операцию по свертке за один день, вместо недели.
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой