|
Очистка РС в ЦБ где в РИБе 45 точек. Как лучше? | ☑ | ||
---|---|---|---|---|
0
Обработка
18.04.22
✎
07:30
|
Прошу совета от всех. Есть РС в нем 12 млн записей. Этот регистр по идее должен был периодически очищаться, оставляя только актуальные записи. Но этим ни кто не занимался. Хочу их удалить. Но увы у нас в РИБе 45 точек. Сразу по много удалять нельзя, иначе обмен задохнется. Вопрос - могу ли я удалить все нужные центр базе без регистрации? Что ждет меня в будущем? Возможно ли когда эти записи появятся снова то при миграции в периферию будут коллизии по записям? Есть еще вариант удалять их по порциям каждую ночь по 200-300 тыс.
|
|||
1
PuhUfa
18.04.22
✎
07:34
|
(0) А что за данные в этом РС? Напиши регламент который будет удалять старые записи в каждой точке самостоятельно не дергая обмен
|
|||
2
Обработка
18.04.22
✎
07:39
|
(1) РС это сегменты номенклатуры.
В каждой дочке опасно. Может не сработать. Там работают с утра до позднего вечера потом компы выключают. |
|||
3
PuhUfa
18.04.22
✎
07:48
|
(2) а опасно почему? боишься что выключат пока идет удаление?
|
|||
4
Обработка
18.04.22
✎
07:50
|
(3) ЗА всеми не уследишь. У всех разные компы разный объем данных . ДА и организвать чтоб они ночью запустили. что-то Это сложно.
Скорее если буду регить удаления то порциями буду. Если не регить то в ЦБ почищу и успокоюсь. |
|||
5
PuhUfa
18.04.22
✎
08:05
|
(4) Регламентное можно запускать не только ночью, но и сутра -)
|
|||
6
Индиго
18.04.22
✎
08:06
|
Сохрани срез последних в тз и в ЗначениеВФайл() на дату
Поруби все движения до даты, а потом из ТЗ восстанови остатки |
|||
7
Обработка
18.04.22
✎
08:10
|
(4) С утра могу запустить. Но удаление долго идет даже если по 200 тыс записей.
А если удалять по 10-20 тыс. То буду удалять пол года. ))) |
|||
8
Индиго
18.04.22
✎
08:11
|
(7)Скульно удали.У меня в РС с 17лямами до заданной даты удаляло минут 15-20
|
|||
9
Обработка
18.04.22
✎
08:11
|
(6) Не периодический и не зависимый.
ЭТо РС НоменклатураСегмента... |
|||
10
Обработка
18.04.22
✎
08:12
|
Всего 3 измерения и без рксурса.
|
|||
11
Индиго
18.04.22
✎
08:12
|
только потом желательно выгрузку - загрузку в dt сделать, чтобы размер базы поменьше стал
|
|||
12
Индиго
18.04.22
✎
08:13
|
(9)Тогда вообще не вижу проблем...Если скулем удалять, то в сообщение риб оно не попадает
|
|||
13
Обработка
18.04.22
✎
08:14
|
(11) Про какой ДТ? У меня база скульная 250 гигов.
Даже не не стоит. |
|||
14
PuhUfa
18.04.22
✎
08:14
|
(9) А как ты в нем определяешь "старые" записи?
|
|||
15
Индиго
18.04.22
✎
08:15
|
(13)у меня скульная 1100 гиг была и ничего..Недавно обрезку делали- норм и выгрузилось и загрузилось.Часа за 4:-)
|
|||
16
Обработка
18.04.22
✎
08:15
|
(12) Скулем удалять не умею толком, надо ведь отобрать. Мне нельзя все удалять. А часть надо оставить.
|
|||
17
Обработка
18.04.22
✎
08:16
|
(14) По измерению сегмент. В нем есть нужные реквизиты.
|
|||
18
Обработка
18.04.22
✎
08:19
|
Вот ниже обработка готовоая. Может кому нужно будет.
&НаСервере Процедура УдалитьРегистрациюНаСервере() Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | НоменклатураСегмента.Сегмент КАК Сегмент, | НоменклатураСегмента.Сегмент.Код как Код, | КОЛИЧЕСТВО(*) КАК кол |ИЗ | РегистрСведений.НоменклатураСегмента КАК НоменклатураСегмента |СГРУППИРОВАТЬ ПО | НоменклатураСегмента.Сегмент |УПОРЯДОЧИТЬ ПО | кол"; РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Если ВыборкаДетальныеЗаписи.Код = "РО-000123" или ВыборкаДетальныеЗаписи.Код = "OW20615" Тогда Продолжить; КонецЕсли; УдалитьТекущийРегистрациюНаСервере(ВыборкаДетальныеЗаписи.Сегмент); КонецЦикла; КонецПроцедуры |
|||
19
Обработка
18.04.22
✎
08:20
|
&НаСервере
Процедура УдалитьТекущийРегистрациюНаСервере(ТекСегмент) Если ТекСегмент = Справочники.СегментыНоменклатуры.ПустаяСсылка() Тогда Сообщить("Сегмент не выбран!"); Возврат; КонецЕсли; Набор = РегистрыСведений.НоменклатураСегмента.СоздатьНаборЗаписей(); Набор.Отбор.Сегмент.Установить(ТекСегмент); Набор.Записать(); Выборка = ""; ВсеОбработано = Ложь; Пока Истина Цикл Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ Первые 25000 | НоменклатураСегментаИзменения.Узел КАК Узел, | НоменклатураСегментаИзменения.Сегмент КАК Сегмент, | НоменклатураСегментаИзменения.Номенклатура КАК Номенклатура, | НоменклатураСегментаИзменения.Характеристика КАК Характеристика |ИЗ | РегистрСведений.НоменклатураСегмента.Изменения КАК НоменклатураСегментаИзменения |ГДЕ | НоменклатураСегментаИзменения.Сегмент = &Сегмент"; Запрос.Параметры.Вставить("Сегмент",ТекСегмент); РезультатЗапроса = Запрос.Выполнить(); ВсеОбработано = РезультатЗапроса.Пустой(); Если ВсеОбработано Тогда Прервать; КонецЕсли; Выборка = РезультатЗапроса.Выбрать(); Набор = РегистрыСведений.НоменклатураСегмента.СоздатьНаборЗаписей(); Пока Выборка.Следующий() Цикл Набор.Отбор.Сегмент.Установить(Выборка.Сегмент); Набор.Отбор.Номенклатура.Установить(Выборка.Номенклатура); Набор.Отбор.Характеристика.Установить(Выборка.Характеристика); ПланыОбмена.УдалитьРегистрациюИзменений(Выборка.Узел, Набор); КонецЦикла; Выборка = ""; КонецЦикла; КонецПроцедуры |
|||
20
Фрэнки
18.04.22
✎
08:28
|
Какие-то странные мучения. Удаление РС Сегменты номенклатуры. Ну в самом деле, если есть срез последних этого сегмента или даже несколько срезов последних на дату.
Их можно во временный набор на время выполнения обработки записать или посмотреть по какому правилу заполняется этот сегмент на дату. Стоп, да это вообще примитивнейшая ерунда, которую принципиально не нужно передавать по обмену. Если только при заполнении сегмента позициями не идет учет всей базы, а не одной конкретной точки. Короче говоря: 1) удаление всех записей в наборе РС делается в одно действие. Без перебора записей. 2) правило для перезаписи позиций в сегмент запускается в задании отдельно. Вполне возможно, что ранние даты уже не актуальны. 3) пересмотреть привязку номенклатуры к сегментам. Вполне возможно и даже должно быть так, что использование старых сегментов (датами в истории) не зависит от того, есть запись о вхождении номенклатуры в сегмент или нет. Просто используется сегмент. Который код ищет по вхождению номенклатуры в сегмент. Этот регистр вспомогательный, а не ключевой. Если записей в нем не будет, то запустится процедура определения сегмента, которая понизит скорость оперативной работы до момента восстановления записей на сегмент. |
|||
21
Фрэнки
18.04.22
✎
08:33
|
И далее, если на периферийных узлах использования сегментов нет, а это использование там реально и даром никому не впало, то назначать и применять сегменты только в центральной базе.
Допроведение сегментов регламентым заданием только в центральной базе. На периферию сегменты не передавать и не назначать их там вообще, по причине отсутствия на периферии функциональных менеджеров для принятия решений по данным из сегментов. |
|||
22
Обработка
18.04.22
✎
08:37
|
(20)
1. Все не могу удалить. Надо оставить по 2-3 сегментам записи. 2. Так и есть. 3. Не понял о чем идет речь (21) Не совсем так. При продаже в рознице и при расчете скидок РМК объязательно смотрит на вхождение в нужный сегмент. |
|||
23
Serg_1960
18.04.22
✎
08:47
|
Если возможно, то напишите обработку, которая с периодичность обменов будет частично, пачками записей, чистить РС. Если между сеансами изменять незначительное количество (например, 500000 записей) - то этого будет всего лишь незначительной доп.нагрузкой для обменов между узлами - юзверя ничего не заметят :)
|
|||
24
Индиго
18.04.22
✎
08:50
|
(18)Держи.Не мое правда:-)
https://disk.yandex.com/d/-EbBn0fK4daaKQ |
|||
25
Обработка
18.04.22
✎
09:21
|
(23) Склоняюсь к этому.
Если сделаю удаление в ЦБ регл заданием ночью. Пусть допустим удаляет по 200 тыс - 500 тыс. И забыть на пару недель думаю все устаканится. |
|||
26
Обработка
18.04.22
✎
09:23
|
Если от 13 млн удалю 10-12 млн записей на это уйдет 20-30 дней оказывается. Это месяц...
|
|||
27
Обработка
18.04.22
✎
09:25
|
(24) Спасибо. В любом случае пригодится.
|
|||
28
PuhUfa
18.04.22
✎
09:33
|
(26) до этого момента ни кто вообще не удалял и жили же, ну поживут еще месяц -)
|
|||
29
Обработка
18.04.22
✎
09:49
|
(28) И это тоже верно. ))
|
|||
30
Фрэнки
18.04.22
✎
09:50
|
Понятно, что РМК обязано смотреть вхождение в сегмент.
Что делает РМК, если вхождение в сегмент просто не обнаружено? Там должен быть прописан код, определяющий алгоритм дальнейших действий. Есть подозрение, что алгоритмя будет такой, наличие номенклатуры в выбираемом сегменте вообще никак не зависит от того, была передана информация о сегментах из ЦБ или была рассчитана на месте по данным текущей периферийной базы. Я просто помню предыдущие темы, в которых появлялся вопрос вида : мы какой-то ерунды напихали в наш РИБ и он теперь как-то тормозит и думаем базы резать Так вот и видно теперь чего напихали |
|||
31
Обработка
18.04.22
✎
09:55
|
(30) Задача это у меня как следствие.
Без вхождения в сегмент скидка ни как не рассчитается! Даже придумали скидку который считается если не входит в сегмент. (То есть сегмент исключение.) Но это задача чисто очистить мусор накопленный за годы только и всего. Просто ни кто не удосужился включить регламент очищение сегментов. И в сегментах по акции не ставили дату конца акций. Если бы все это выполнялось было бы сейчас записей не более 30-50 тыс. |
|||
32
Фрэнки
18.04.22
✎
10:05
|
(31) т.е. утверждаешь, что на периферийной базе нет запуска процедур, которые рассчитывают семгенты номенклатуры?
Если это так, то умышленное действие по выключению расчета сегмента при одновременном включении использования сегмента. И далее, необходимо проверить правило расчета сегмента номенклатуры. Вполне вероятно, что такие данные по РИБ из ЦБ передавать не нужно, если расчет сегмента на данных ПБ будет повторять результат расчета на данных ЦБ Тут зависит больше от того, сколько времени занимает расчет сегмента в ПБ, а сколько времени займет такой же расчет и последующая передача сегмента из ЦБ в ПБ |
|||
33
Фрэнки
18.04.22
✎
10:06
|
Ну и понятно, что может быть не расчет, а определение фиксированных наборов записей в сегменты через теже самые разовые скидочные акции и т.д. и т.п.
|
|||
34
Фрэнки
18.04.22
✎
10:20
|
И очистки устаревших данных сегментов нужно запускать непосредственно на ПБ, а не пересылать из центры
миллионы строчек вида удалить, удалить, удалить, удалить... |
|||
35
Фрэнки
18.04.22
✎
10:21
|
Удалить ВСЕ на ПБ и прислать только актуальные из ПБ
|
|||
36
Обработка
18.04.22
✎
10:24
|
(35) Сейчас как раз скулем все удалил в копии в ЦБ все.
И задумался над такой идеей. Но в ПБ не могу залпом удалить все. Потому что торгуют днем. Могу тольок ночью с 2300 по 8 00 утра. |
|||
37
Обработка
18.04.22
✎
10:27
|
Если в ПБ хочу зачистить то.
1. Всем сказать ночью не выключать. 2. Удалять порциями. Другой вариант удалять по каждой точке отдельно и туда присылать то что им нужно. Это ночью опять каждый день парится в течении 15-30 дней. |
|||
38
Фрэнки
18.04.22
✎
10:32
|
(37) наблюдения показывали, что передача данных из РС заново по обмену происходит быстрее, чем их удаление опять таки через обмен.
У тебя же должны быть копии баз в контуре разработчика... Протести, что быстрей. Удалить все одним движением и тут же заливать заново. Вряд ли это займет огромное время, если заливка пойдет только актуальных записей из сегментов. Это же не для торговли "взад", а только оперативные продажи - на сегодня! |
|||
39
Обработка
18.04.22
✎
10:40
|
(38) У меня при продаже есть скидки актуальные все они завязаны сегменте.
Я не могу днем залпом удалить и отправить то что им нужно. Хотя могу. Но! Вот удалять на ПБ базе все ненужные сегменты тоже не быстро. Там у нас скуль "експрессы" и "постгри" стоят. Базы от 5-6 ГБ до 15-20 ГБ. |
|||
40
Фрэнки
18.04.22
✎
11:13
|
Медленно - это только потому, что удаляешь процедурами с построчным перебором выборки
И экспресс работает ровно с той же самой скоростью с таблицами, что ентерпрайз, если их запускать на одной и той же базе 1С |
|||
41
Обработка
18.04.22
✎
12:03
|
(40) А в пострее как мне удалять?
|
|||
42
Serg_1960
18.04.22
✎
12:38
|
(37) А у вас что, обмены раз в сутки? Шикарно живёте. Сделайте раз в час :)
PS: не понимаю я мучений автора. По два/три лимона записей адресного классификатора перегоняю с каждым обменом - никто даже не чухается. |
|||
43
Обработка
18.04.22
✎
12:41
|
(42) Обмены у нас 1 раз 900 секунд...
|
|||
44
Обработка
18.04.22
✎
12:42
|
+ (43) Днем не стоит нагружать обмены...
|
|||
45
Serg_1960
18.04.22
✎
14:05
|
(44) Хех... вы это главному бухгалтеру скажите :) Бухие запускают расчет себестоимости в рабочее время - а при использовании РАУЗ это как раз те самые пресловутые "миллионы" записей регистров, которые мигрируют в РИБ по узлам с каждым пересчетом.
|
|||
46
Обработка
18.04.22
✎
14:18
|
(45) У меня розница. В ЦБ 200-300 юзеров днем.
В Периферийках на точках по 4-6 юзеров. Не та работа. Не про бух базу идет речь. Розница еще имеет кучу обменов с сайтом, с системой лояльности, система доставки, Системы оплаты.. |
|||
47
Обработка
18.04.22
✎
14:19
|
+ (45) Расчет себес у нас в Ка2. И гл бух запускает только ночью и то точно согласовав со всеми.
С 19 00 до 8 00 утра. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |