Имя: Пароль:
1C
 
Удаление 5.000.000 записей из 8.3
0 ixijixi
 
23.09.15
12:10
Посоветуйте, каким образом можно БЫСТРЕЕ очистить регистр сведений ВерсииОбъектов 2.5 млн записей + 2.5 млн таблица изменений?

Через
Набор = РегситрыСведений.ВерсииОбъектов.СоздатьНаборЗаписей();
Набор.Записать();
Чистит уже 12 часов с загрузкой памяти 90%, что неприемлемо долго и затратно.

База 8.3 + MSSQL2012
1 Господин ПЖ
 
23.09.15
12:11
truncate table
2 Апош
 
23.09.15
12:11
truncate table?
3 ДенисЧ
 
23.09.15
12:12
drop table
4 Balabass
 
23.09.15
12:13
(0) удали таблицу в конфигураторе, создай заново.
5 Живой Ископаемый
 
23.09.15
12:13
порциями по 10000
6 Господин ПЖ
 
23.09.15
12:14
(3) Григорий Остер, перелогиньтесь
7 Fragster
 
гуру
23.09.15
12:14
в конфигураторе - режим подчинения регистратору меняешь, применяешь, меняешь обратно.
8 ДенисЧ
 
23.09.15
12:14
(6) Занято уже тобой.
9 DexterMorgan
 
23.09.15
12:14
(4) Зачем удалять? Просто поменять режим записи и все
10 DexterMorgan
 
23.09.15
12:14
(7) +1
11 Господин ПЖ
 
23.09.15
12:14
(8) при truncate таблица останется жива хотя бы...
12 ixijixi
 
23.09.15
12:15
А на живой базе с юзерами можно это делать? (truncate, drop). Например отключить версионирование, заблокировать таблицу....
13 ДенисЧ
 
23.09.15
12:16
(12) отключение версионирования требует (насколько я помню) перезахода пользователей.
Но трункануть можно и в онлайне
14 ixijixi
 
23.09.15
12:16
(9) Вот это не понял?

А что быстрее - (1), (7) или (9)?
15 ДенисЧ
 
23.09.15
12:17
(14) (1)
16 Бубка Гоп
 
23.09.15
12:17
(14) 7 и 9 одно и то же
17 Balabass
 
23.09.15
12:19
(0) Как вариант скопировать можно таблицу, старую удалить, новую переименовать в старую.
18 Balabass
 
23.09.15
12:19
(17) + в Пофигураторе
19 Господин ПЖ
 
23.09.15
12:19
(17) это православно, чисто по конфигураторски...
20 Balabass
 
23.09.15
12:21
(19) Сарказм?
21 ixijixi
 
23.09.15
12:23
(15) truncate table нужно делать для обеих таблиц, как я понимаю - основной и изменений? А в каком порядке имеет значение?
22 ДенисЧ
 
23.09.15
12:23
(21)
begin tran
truncate table1
truncate table2
commit tran

И нет разницы в порядке
23 ixijixi
 
23.09.15
12:24
(22) спасибо
24 Господин ПЖ
 
23.09.15
12:24
(20) не, таблички не было... конфигуратор такие телодвижения и делает после манипуляции над таблицей когда по f7 жмакнуть
25 DexterMorgan
 
23.09.15
12:26
(21) Если у тебя 8.3 и периодический регистр то еще возможно есть таблица итогов: http://www.develplatform.com/2015/05/1_26.html
26 ДенисЧ
 
23.09.15
12:27
(25) А давно ВерсииОбъектов стали периодическими? ))
27 DexterMorgan
 
23.09.15
12:27
(26) О, это я конечно недоглядел =)
28 ixijixi
 
23.09.15
12:46
Вопрос вдогонку. Есть еще такой регистр ОбъектыДоступаДокументов, тоже весьма массивный. Можно ли его безопасно полностью очистить, не скажется ли это на работе пользователей? РЛС не используется.
29 ЧеловекДуши
 
23.09.15
12:53
(0) Удали, его. Запиши, Дбавь его по новой :)
30 viraboy
 
23.09.15
13:07
(0) В транзакции по 10 тыс записей удаляйте.
31 Dmitry1c
 
23.09.15
13:08
матчасть важна
32 ixijixi
 
23.09.15
14:40
По (28) поясните, кто в теме?
33 magicSan
 
23.09.15
14:41
(32) Вали не нужен он
34 ixijixi
 
23.09.15
15:17
(33) Ошибок доступа не будет?
35 ixijixi
 
23.09.15
16:48
+(33) Хотелось бы более развернутой информации...
36 ixijixi
 
29.09.15
22:52
Возвращаясь к вопросу.

Вот почистил (truncate) я эти регистры
РегистрСведений.ОбъектыДоступаДокументов.Изменения
РегистрСведений.ОбъектыДоступаДокументов
РегистрСведений.ВерсииОбъектов.Изменения
РегистрСведений.ВерсииОбъектов

Проверил результат выполнения
EXEC sp_spaceused

1С и SQL показывают, что записей в них нет, и места тоже не занимают. Однако размер файла базы остался прежним (байт в байт), и дата изменения не поменялась.

Подскажите, нужно ли еще что-то делать, чтобы уменьшить размер файла, или шут с ним, пускай остается как есть? Влияет ли это на производительность?
37 mTema32
 
29.09.15
23:03
Можно ТиИс сделать со сжатием или шринкануть средствами скуля, но это не прибавит скорости работы 1с. Так что можно забить.
38 КонецЦикла
 
30.09.15
02:17
В 8.5 1С таки реализует нормальную работу с БД :)
39 ЧеловекДуши
 
30.09.15
06:17
(38) Сомневаюсь. Но без работы мы не останимси :)
40 echo77
 
30.09.15
07:10
Вот эта штука частями может резать записиhttp://catalog.mista.ru/public/191128/
41 НеБорис Нуралиев
 
30.09.15
09:52
(36) Чтобы размер базы уменьшился, нужно Shrink database сделать.
42 ixijixi
 
30.09.15
10:19
(40) Это Вы к чему?
(41) (37) Но если производительность 1С не возрастает, то ну его?
43 ixijixi
 
30.09.15
10:20
(42) или это не предопределено, а определяется опытным путем?
44 Господин ПЖ
 
30.09.15
10:34
а с чего ей возрастать? чтобы что-то получить надо и дефрагментацию сделать чтобы снизить накладные расходы в fs
45 rozer76
 
30.09.15
10:35
(42) как думаешь сам для чего Shrink придуман ? )
46 RetZet
 
30.09.15
10:40
Мне пришлось резать около 3-х млн. записей по регистру НДС по партиям товаров. Там док распределение ндс по продукции в УПП плодил кучу мелких копеек туда-сюда. Потом нашли почему так происходило, и исправили, но эти мульёны остались. Поэтому сделали так. На 31.12 по регистру сформированы остатки на эту дату и записаны порциями по 10 тыс. в док Корректировка записей регистров на начало дня 01.01. Получилось порядка 50 доков остатков. Вроде нормально.
Теперь надо избавиться от мульёнов. Делаем всё в SQL менагере.
Технология такая: сперва копируем с даты 01.01. все записи таблицы регистра в темпДБ, потом транкейт этой таблицы регистра и итогов, потом возвращаем ранее скопированные записи из темпДБ. Потом пересчет итогов. Резалт: 2 часа на формирование остатков, 2 часа на удаление, 4 часа на 3 мульёна записей и регистр встал норм.

Точного скрипта не сохранилось, но что-то типа
insert into ТемпДБ table
select * from МояТаблица
where дата >= 01.01
TRUNCATE TABLE МояТаблица
insert into МояТаблица table
select * from ТемпДБ

Это наверное на http://www.sql.ru надо сходить, поспрашивать точный скрипт

Пред всей операцией бекап базы, потом шринк, после проведения работ, опять шринк. И темпы тоже почистить. Пересчет итогов.

TRUNCATE - это самое быстрое что есть, все остальные это долго.
47 ixijixi
 
30.09.15
11:07
(45) Интрига!
ЗЫ. В СКЛ новичок, так что разжуйте подробнее)
48 Господин ПЖ
 
30.09.15
11:08
в мануале все разжовано
49 ixijixi
 
30.09.15
11:09
(48) В мануале сиквела? Не сомневаюсь. Однако предполагаю, что про быстродействие 1С там вряд ли что-то написано
50 ixijixi
 
30.09.15
11:14
(46) Спасибо за наводку, я как-то в этом ключе и думал делать.