Имя: Пароль:
1C
 
Свертка базы не прерывая работы пользователей
,
0 Trance_1C
 
14.02.17
07:32
Приветствую коллеги, интересно мнение многоуважаемой публики по этому вопросу.
На входе имеем большую УПП 1.2 база расположилась на внешней СХД и занимает около 700гб. (без учета лога транзакций, только файлы базы 30шт.)
В базе 24х7 работают 200-550 злых юзверей, когда пересекаются часовые пояса мск и дв число юзеров доходит до 520. Прерывать работу БД очень нежелательно.
При этом требуется свертка БД.
Я уверен, что технически возможно свернуть БД не прерывая работы пользователей, выполнив порционные запросы по очистке регистров на сиквеле, внеся остатки и удалив документы без движений из базы.
Если у кого есть подобный опыт и вы сталкивались с неприятными последствиями такой свертки, прошу поделиться :)
1 Это_mike
 
14.02.17
07:37
на семерке это реализовано!©
:-)))
2 Мимохожий Однако
 
14.02.17
08:33
(0) Не делал,но предложу. Переносить в другую базу регламентным заданием остатки и создаваемые документы с использованием Плана обмена для свёртки.
3 Alexor
 
14.02.17
08:50
(0) В праздники НГ или 1 мая тоже вкалывают?
4 Это_mike
 
14.02.17
08:52
(3) у нас сервер останавливался только с 16-18 часов 31 декабря до 20 часов 1 января.. а в условиях 24*7 от нерезиновска до дальнего востока - и это время сильно сокращается...
5 Alexor
 
14.02.17
08:52
Стандартный перенос требует перепроведения документов восстановить партионный учет. я наверное тоже бы делал на копии потом вливать документы созданные.
6 Alexor
 
14.02.17
08:55
(4) Я бы для такой схемы ставил фронт для работы пользователей. Что бы формировал только движение, остатки и взаиморасчеты Не закрывая по партиям. А уже с фронта грузил в базу. Тогда можно фронт спокойно резать "по живому".
7 Это_mike
 
14.02.17
08:57
(6) у нас и так автоматом подрезалось. даже без участия человека, в часы наименьших нагрузок, по расписанию....
8 FIXXXL
 
14.02.17
09:18
делал копию, сворачивал, затем подгружал всю инфу за время работы свертки и переключал пользователей
на таких объемах поставил бы дату запрета редактирования задним числом на момент снятия копии
9 vde69
 
14.02.17
09:26
я бы пошел через последовательности.

1. ставишь дату запрета
2. заводишь несколько последовательностей с измерениями, по каждому измерению догоняешь до точки обрезки и создаешь на дату запрета документ который делает 2 набора движений (симметричных, плюс и минус)
3. начинаешь бежать по последовательности с начала и у каждого документа вырезаешь движения и одновременно корректируешь одну часть симметричного документа ввода остатков.

такая обработка может крутится и месяц не мешая работе пользователям
10 Trance_1C
 
14.02.17
09:35
(9) Оригинальное решение, спасибо. В этой базе такой процесс реально может занять не один месяц, каждая запись таких симметричных документов будет долгой.

У меня одно важное условие при выполнении этой задачи - необходимо оставить данные с 2014г. по тек. момент.
Все что раньше 14 - срезать (с 2006г.). При этом база должна быть онлайн.
Я решил поступить следующим образом:
- Зачищаю РНК (на стороне sql), по-одному на дату свертки.
- после зачистки каждого регистра ввожу корректировку записей регистров на момент свертки. Корректировка создается обменом из копии.
Учитывая что в моих условиях sql удаляет из РНК записи со скоростью 1млн/мин.
а корректировка загрузится за 2-3мин., свертка самых крупных РНК типа "ВзаиморасчетыСКонтрагентами" не займет больше 15мин.
и таким образом предстоит свернуть примерно 30 РНК, и один РБУ.
+ примерно 100 РСВ, но по ним итогов нет, остатки загружать не надо, их сверну одним заходом.
11 vde69
 
14.02.17
09:42
(10) я-бы не советовал так поступать, часть кода может быть ориентивана не на виртуальные таблицы остатков/оборотов а на физические записи в регистре.

ну а если будешь резать весь регистр - то у тебя документ корректировки может быть огромным,Ю особенно если регистры не закрываются как надо а расползаются по аналитике... в результате получишь документ корректировки с миллионом строк... и чего с ним будешь делать? а дробить при таком подходе - то же опасно...
12 AndyD
 
14.02.17
09:47
проверь сначала, что там занимает эти 700 гб, может там 80% всего объема - итоги кривые.

опять же, зачищать оборотные рн можно прямо в рабочее время.

зачищать остаточные рн можно по дням порегистрово: по определенному регистру сформировали ввод остатокв и сразу удалили движения за предыдущий день(час, неделю).

конечно, несколько секунд(минут) остатки будут неактуальные и все зависит от того, критично ли это для бизнеса. уверен, на часть рн всем пофигу.
13 AndyD
 
14.02.17
09:52
после прямого удаления записей рн на сервере скл придется пересчитывать итоги через 1с, а на вашей базе от этого будет проблем у пользователей намного больше, чем от медленного постепенного удаления записей рн 1сом с автоматическим пересчетом итогов в реальном времени.
14 Serg_1960
 
14.02.17
09:53
Я фанат РИБ :) Развертываешь базу подчиненного узла альтернативным способом из копии. Это несложно и времени потребует почти столько же, как просто развернуть копию из архива.

Там, в базе подчиненного узла, не торопясь, со вкусом , проводишь свёртку... а потом быстро делаешь обмен.

Фсё :)
15 Trance_1C
 
14.02.17
09:55
(11) так и есть, почти все РНК не закрываются полноценно, те-же взаиморасчеты не закрываются по сделкам или докам расчетов...
Код ориентированный на таблицы записей обычно привязан к периоду, для всех будет очевидно что за период ранее 14го, в базе ничего не будет.
(12) с оборотными никаких вопросов, я уже на копии проверил как они зачищаются - все ровно.
700гб заняты основными таблицами партии, расчеты, движения ДС, заказы с корректировками, и немного вложений файлов...
(13) Пересчет итогов конечно понадобится, но и пройдет он намного быстрее чем это происходит сейчас. В воскресенье я еще могу закрыть базу на лопату на несколько часов...
(14) Хорошая идея... главное не менять конфигурацию пока не прошел обмен :)
16 Serg_1960
 
14.02.17
10:03
(15) В принципе, можно менять конфигурацию.

В центральной очищаешь всю регистрацию, обновляешь конфигурацию и делаешь запись сообщения обмена для подчинённого узла.
В подчинённом узле обработкой читаешь регистрацию изменений; сохраняешь где-нибудь "во вне"; очищаешь регистрацию; проводишь обмен (загрузку/выгрузку); восстанавливаешь регистрацию.
В центральном узле делаешь чтение сообщения обмена от подчиненного узла.

Несложная арифметика :)
17 Trance_1C
 
14.02.17
10:24
(16) все так, безвыходной ситуации здесь конечно нет, но когда на регистрацию встает 2000-3000 заказов и реализаций каждый день, все описанные выше манипуляции могут заметно подпортить настроение, та-же выгрузка/загрузка регистрации в xml

Вообще, я все больше склоняюсь к варианту с РБД, там сколько угодно можно базу блокировать, ТИИ крутить и никто не помешает :)
18 Serg_1960
 
14.02.17
11:00
Угу, ты прав. Растягивать надолго процесс свёртки нежелательно. Только по объективным причинам.
19 Aleksey
 
14.02.17
11:08
(17) А как собираешься решать проблему обменов? При загрузки в центр оно будет блокировать. Грузить частями по умолчанию не получится. Нельзя прервать на полпути
20 Aleksey
 
14.02.17
11:10
Если заморачиватся с обменами я бы посадил бы их в почку, а резал главный узел (односторонний обмен из почки в голову). Потом потихоньку бы подгрузил бы в главный узел что они наколбасили и пересадил бы в головной узел. Тем самым сведя риск блокировок и задержек к минимуму
21 tabarigen
 
14.02.17
11:35
хм. неделю назад запросил КП у одной из фирм из МСК, на свертку УТ10.3 (не особо дописанной). Размер БД - 80Гб.
В общем запросили 350к. Вот думаю....
22 Это_mike
 
14.02.17
11:35
(19) а не надо в центр грузить. только из центра. и после обрезки и последней загрузки - замена БД
23 Фрэнки
 
14.02.17
11:40
(21) ну наверное, эти 350к выражены в каком-то списке работ и почасовой раскладке на каждую из них? Можно поспорить и они наверняка свой ценник уменьшат.
24 Фрэнки
 
14.02.17
11:43
Вопрос к Trance_1C

А какой эффект ожидают поиметь от этой процедуры "все свернуть и поделить" ?

Вангую, что этот же эффект не всем будет нужен и далеко не все его заметят.
25 tabarigen
 
14.02.17
11:54
(23) приведу несколько этапов которые они оценили.
1) Анализ текущей информационной системы и разработка методики свертки объектов ИС - 54к

2) Разработка инструментария свертки ИС - 144к.


Ладно еще если УТ 10 у нас была бы сильно допилена. Так там Полностью типовой функционал, разве что есть 1 свой регистр накопления.
26 Aleksey
 
14.02.17
11:59
(25) Так пункт 2 зависит от пункта 1. Поэтому выставили по максимуму. Или ты хотел увидеть вилку?
27 Жан Пердежон
 
14.02.17
12:04
а еще есть секционирование
https://msdn.microsoft.com/ru-ru/library/ms190787.aspx
28 AndyD
 
14.02.17
12:30
(21)(25)  эх, а я, лошара, за 2 выходных 200 гиговую упп переписанную сворачивал самописными многопотоковыми обработками (стандартная свертка раз в 5 медленнее работает)
29 Фрэнки
 
14.02.17
12:43
(25) // Анализ текущей информационной системы и разработка методики свертки объектов ИС - 54к

Если изначально оценка строится на подсчете часов и перемножении на тариф, да еще без учета формы оплаты, да еще через крупную внедренческую контору...

Ну нормально все и выставили, если внутри вилки почасового тарифа 54к оказались сопоставимы примерно с 25-30 часов на проведение Анализа.

Или тебе хочется найти того, кто сдемпенгует от этой оценки в меньшую сторону и в три раза меньше возьмет в рублях?
30 Фрэнки
 
14.02.17
12:47
к 29 допишу

Но я не удивлюсь,, если в процессе выяснится, что 25 часов анализ и 25 составление методики, если это рассматривается крупная контора, а не решение всех проблем внутри квартир подходом "муж на час". Имеем отдельного Аналитика - тот свою выработку крутит. И отдельного разработчика - у которого своя выработка. В итогах идет впечатление о завышенных оценках, которые должны покрыть все издержки компании-внедренца
31 ptiz
 
14.02.17
12:53
(10) "Корректировка создается обменом из копии."
Лучше так:
1) Создаешь корректировку с Выключенными движениями
2) После обрезания включаешь движения.
32 ptiz
 
14.02.17
12:54
+(31) речь про "активность" записей
33 Tarlich
 
14.02.17
13:01
1 ) однозначно в основной базе (с учетом такого и объема и всего) не получиться делать поиск и удаление объектов .....
2 ) да есть,  скульные свертки , а есть очистки базы
вот пример http://catalog.mista.ru/public/122546/

3) 700 гиг конечно не щутки (врать не буду с таким объемом да же близко не сталкивался)

4) какие таблицы самые большие ?
Делал свертку в одной конторе ,  по удалял рег. сведений и оборотные регистры , по мелочи док которые не влияют на движения (счет с\ф и т.д - для меня....), удалил табличные части документов (движения оставил), был удивлен что места много занимает журналы ...  и этого хватило !!!

а вот этой очисткой можно удалить из журналов....
34 tabarigen
 
14.02.17
13:07
(30) спасибо. в общем все наверное именно так как вы расписали. Внедренцы полностью покрыли свои расходы.
35 Mr_Best
 
14.02.17
13:08
(0) сколько в среднем в минуту добавляется/изменяется справочников и документов ?
Программист всегда исправляет последнюю ошибку.