|
Удаление 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) Спасибо за наводку, я как-то в этом ключе и думал делать.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |