![]() |
![]() |
![]() |
|
Реструктуризация таблицы с большим количеством документов | ☑ | ||
---|---|---|---|---|
0
Zigzug
13.11.08
✎
21:30
|
Имеется база на 1с8, sql-трехзвенка, релиз 13. Релиз, на всякий случай уточню, менять совсем не вариант. В базе есть документ, на данный момент документов этого вида порядка 4 миллионов.
Понадобилось добавить этому документу реквизит. При добавлении прямо в лоб впечатались очень досадные грабли. При попытке сохранения в БД измененной конфигурации, 1С начинает что-то нудно и долго считать. Процесс аппликейшна во время этой черной мессы мило пухнет, распухая для критичных (для 8.0, со слов самой 1С) полутора гигов. После чего вся эта красота валится с предсмертным криком "Размер выборки превысил...". К этому моменту успевает обработаться 2.9 миллиона документов, что, разумеется, не радует. Резать базу - тоже, как ни печально, не вариант. Проведен эксперимент. Сделана копия таблицы, содержащей реквизиты документа, truncate исходную таблицу, реструктуризация на пустой, затем восстановление данных в получившуюся таблицу из копии. В результате получен журнал документов с реквизитами шапки, но угроблены табличные части. То есть, эта зараза при реструктуризации, что-то там еще имеет наглось считать в связанных таблицах. Вопросы: - достаточно ли будет провести аналогичную описанной процедуру с таблицами ТЧ, чтобы получить на выходе исходные, но уже реструктуризированные документы - если нет - какие еще таблицы в БД (типы объектов) могут быть связаны с процессом изменения таблицы документа. Профайлер пытать не хочется, он в случае 1с-а слишком много лишнего знает - Назначение в таблицах timestamp поля _Version. То есть, умом я понимаю, что оно в данном случае не существенно, но шут его знает, что на него завязано в 1С-овской реализации. - Профессионалам - может, существует какой-нибудь другой, простой и приятный выход из моей ситуации Заранее спасибо |
|||
1
H A D G E H O G s
13.11.08
✎
21:39
|
(0) Щас глянем, что там ресткуктуризируется...
P.S. Реально новые реквизиты в рег. сведений выносить? |
|||
2
Zigzug
13.11.08
✎
21:44
|
Относительно. По этому реквизиту предполагаются частые и массовые грязные выборки. Учитывая, что оно все в комплексе и так еле шевелится, дополнительных джойнов хотелось бы избежать.
|
|||
3
H A D G E H O G s
13.11.08
✎
21:46
|
(2) Почему еле шевелится?
|
|||
4
Zigzug
13.11.08
✎
21:53
|
(3) Потому что общий размер базы перевалил за 320 гигов при 480 средневзятых активных пользователях. И потому что во всей базе используется, по сути, три вида документов и два бухгалтерских регистра. Но это моя местечковая лирика, все-таки хотелось бы услышать, как проблему то решить ))
|
|||
5
H A D G E H O G s
13.11.08
✎
22:00
|
(0) Первичный анализ показал - надо экспортировать и табличные части
|
|||
6
ptiz
13.11.08
✎
22:16
|
А если пойти таким путем:
сделать базу из пустого cf, добавить реквизит, добавить колонку (с получившимся именем) в таблицу рабочей базы, заменить в рабочей таблицу config и configsave. |
|||
7
Zigzug
13.11.08
✎
22:23
|
(6) Точно не вариант - при создании новой базы все идентификаторы таблиц/полей слетают в нирану, то бишь - задуманное 1С-ом. Они у них, видите ли, генерятся онлайн. Расхождения, по крайней мере в моем случае, превышают все мыслимые - укокошусь исправлять ))
|
|||
8
H A D G E H O G s
13.11.08
✎
22:29
|
(7) Нифига не слетает
|
|||
9
H A D G E H O G s
13.11.08
✎
22:30
|
(8) Стучись в аську
|
|||
10
H A D G E H O G s
13.11.08
✎
22:30
|
Даже движения остаются
|
|||
11
H A D G E H O G s
13.11.08
✎
22:30
|
Только ТЧ удаляются
|
|||
12
H A D G E H O G s
13.11.08
✎
22:31
|
1С 8.1.10.50
|
|||
13
ptiz
13.11.08
✎
22:38
|
(7) Сделать копию базы средством SQL, сделать truncate этой большой таблицы, добавить реквизит. Тогда ничего не слетит.
|
|||
14
ptiz
13.11.08
✎
22:42
|
(13) Кроме config и configsave понадобится еще params (может и DBSchema ? тут точно не знаю, но на копии попробовал всё это скопировать - прокатило)
|
|||
15
H A D G E H O G s
13.11.08
✎
22:54
|
Короче:
Экспорт таблицы документа и таблиц ТЧ в другую базу SQL (можно в туже базу, в другие таблицы), Truncate TABLE таблицы документа и таблиц ТЧ, натягивание реквизита с датой в Пофигураторе, обновление конфы, заход в SQL, развешение на новую колонку Allows NULLS, импорт из резервных таблиц, UPDATE основной таблицы, новой колонки нулевой датой, запрещение Allows NULLS на новую колонку. Вроде все, счаст еще откатаю.. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |