|
1С:Предприятие
:: 1С:Предприятие 8 общая
|
|
| ||
080808Ник 23.01.21 - 22:01 | Собственно есть самописная конфигурация. в ней два регистра в одном есть два поля ссылка и дата. в этом регистре 8 000 000 записей, а есть второй регистр в нем есть ссылка из первого регистра, но нет даты. В этом регистре 200 000 000 строчек. Мне нужно удалить из регистра два часть записей за определенный период. средствами 1с запустил обработку, удалилось пара миллионов за сутки. Решил попробовать через SQL. как в запросе delete указать отбор?
Я так пониаю мне нужно что то типа delete from t1 where key in (select key from t2 where date < '2020-1-1') Написал, ругается на синтаксис | ||
080808Ник 1 - 23.01.21 - 22:15 | SELECT
FROM [Test].[dbo].[_InfoRg1960] where [_Fld1961] IN (SELECT [_Fld1948] ,[_Fld1951] FROM [Test].[dbo].[_InfoRg1947] where [_Fld1948]<'4015-08-01') Выдает Сообщение 116, уровень 16, состояние 1, строка 10В списке выбора можно указать только одно выражение, если вложенный запрос не предварен EXISTS. | ||
080808Ник 2 - 23.01.21 - 22:16 | упс. чет не вставилось SELECT [_Fld1961] вначале | ||
080808Ник 3 - 23.01.21 - 22:20 | мистяне что, все на митинги ушли?) | ||
H A D G E H O G s 4 - 23.01.21 - 22:20 | Добавить в Регистр, который удаляешь Булево, как первое измерение.
В 1С заполни его и удаляй
delete top 100000 from Test].[dbo].[_InfoRg1947]
where _Fld1948=0x01 | ||
H A D G E H O G s 5 - 23.01.21 - 22:21 | Удаляй через top 100000, хотя бы оценишь скорость. | ||
H A D G E H O G s 6 - 23.01.21 - 22:24 | Сколько записей в рамках одной ссылки? | ||
H A D G E H O G s 7 - 23.01.21 - 22:24 | Как много записей нужно удалить? | ||
H A D G E H O G s 8 - 23.01.21 - 22:27 | Ошибка у тебя в подзапросе, здесь SELECT [_Fld1948] ,[_Fld1951] а надо SELECT [_Fld1948]или SELECT [_Fld1951] | ||
080808Ник 9 - 23.01.21 - 22:28 | (6) та в том и беда, может быть вообще ни одной ссылки, а может быть и несколько тысяч. из первого регистра нужно у удалить где то миллионов 6, а из в торого где то 150 миллионов. | ||
080808Ник 10 - 23.01.21 - 22:28 | |||
080808Ник 11 - 23.01.21 - 22:29 | я тут нагуглил Как правильно удалить записи регистра сведений через MS SQL?
" H A D G E H O G s 48 - 10.08.17 - 14:40 А так - можно поотключать индексивароние-ведущесть у измерений и ресурсов - и вперед, типовыми средствами." - только ведущие снять или основной отбор тоже? | ||
080808Ник 12 - 23.01.21 - 22:30 | В 1с я сделал процедуру, выгребаю там тысяч 100 записей раскидываю их на 100 таблиц по тысячи и в фоновых заданиях удаляю. быстрее чем последовательно но все равно медленно | ||
H A D G E H O G s 13 - 23.01.21 - 22:45 | Я бы отключил именно для данной операции проверку страниц, епстественно, сделав копию БД предварительно, а после удаления сделал бы check этих 2-х таблиц.
Ну или хотя бы включил режим torn-page | ||
080808Ник 14 - 24.01.21 - 00:01 | (13) Спасибо огромное! Разница в удалении на порядки. 171 000 записей в sql цдалилась за 12 секунд, в 1с на это уходило минут 15-25 | ||
Злопчинский 15 - 24.01.21 - 00:58 | да... я думал что в 8-ке не надо как в 77 извращаться... а вишь, как оно, по прежнему все непочеловечески | ||
080808Ник 16 - 24.01.21 - 01:01 | (15) не ну в 8ке извращений можно намного больше придумать и фоновыми заданиями и через скуль. кстати можно сделать внешний источник прикрутить его к своей же базе и через него удалять)))) | ||
080808Ник 17 - 24.01.21 - 01:07 | хотя согласе, в регистры сведений в отбор могли на очистку вставить в списке | ||
H A D G E H O G s 18 - 24.01.21 - 01:19 | (17) я точно не помню, а разве нельзя для НабораЗаписей указать Отбор ВСписке.
? Это вроде решает всю проблему. | ||
080808Ник 19 - 24.01.21 - 01:39 | (18) если бы можно было( | ||
DEVIce 20 - 24.01.21 - 07:53 | (18) Отборы только на равенство. | ||
hhhh 21 - 24.01.21 - 08:20 | (19) всё-таки, наверно, удаление через 1с не до конца отработано. Скорее всего тормоза где-то в процедурах ПриЗаписи и ПередЗаписью регистра, и в подписках там еще, регистрация для обмена и так далее. Надо это всё вырубить. И удалять при ОбменДанными.Загрузка = Истина.
потом с транзакциями надо поработать. Задать допустим 5-10 тыс операций в одной транзакции. | ||
Конструктор1С 22 - 24.01.21 - 08:36 | (0) покажи как средствами 1с удаляешь | ||
H A D G E H O G s 23 - 24.01.21 - 10:53 | |||
080808Ник 24 - 24.01.21 - 13:40 | (21) нет, проблема в том что для удаление тебе нужно накладывать отбор на набор записей на равенство, соответственно, по сути мне нужно сделать (6 миллионов раз на 2) запросов в базу данных на чтение и на запись. Через скуль сразу делаю на удаление и все. По итогу за 2 часа удалил все 150 миллионов записей. | ||
080808Ник 25 - 24.01.21 - 13:42 | (22) Для Каждого Ключ из Ключи Цикл Набор.Отбор.Ключ.Установить(Ключ); Набор.Записать(); НаборОсновной.Отбор.Ключ.Установить(Ключ); НаборНаборОсновной.Записать(); | ||
Конструктор1С 26 - 25.01.21 - 11:45 | (25) это дело легко можно было бы распараллелить с помощью фоновых заданий | ||
VladZ 27 - 25.01.21 - 11:56 | (0) "8 000 000 записей" - зачем столько данных в регистре? | ||
080808Ник 28 - 25.01.21 - 12:27 | |||
sapphire 29 - 25.01.21 - 12:52 | (0) SELECT INTO во времянку из целевой таблицы TRUNCATE целевой таблицы INSERT из времянки в целевую | ||
aka MIK 30 - 25.01.21 - 12:57 | (29) это смотря сколько записей остается. Для свертки базы на 1 число текущего месяца - да, только так Рекламное место пустует | ||
VladZ 31 - 25.01.21 - 15:21 | (28) Я дальше и не читал. :) | ||
sapphire 32 - 25.01.21 - 15:40 | (30) Годится, если записей меньше половины | ||
080808Ник 33 - 25.01.21 - 16:10 | (29) интересный вариант. надо попробовать на тестовой и сравнить скорость | ||
sapphire 34 - 25.01.21 - 17:39 | (33) Да, да, пренепременно попробуй. Много интересного узнаешь.
Собсно, почитай про вариант 2 реструктуризации ИБ на платформе 8.3.... | ||
080808Ник 35 - 25.01.21 - 18:24 | (34) "вариант 2 реструктуризации ИБ на платформе 8.3" - это что такое? | ||
Ёпрст 36 - 25.01.21 - 20:45 | (35) https://wonderland.v8.1c.ru/blog/optimizatsiya-restrukturizatsii-bazy-dannykh/
неплохой метод. Единственное, в протоколах скуля должен быть включен tcp/ip, если будет еще и другой канал, типа шаред мемори, то не полетит | ||
sitex 37 - 25.01.21 - 20:51 | (36) даже если указано lpс в настройках? | ||
Ёпрст 38 - 25.01.21 - 20:53 | (36) да. У нас скуль с сервером 1с на одном компе, приходилось вырубать все протоколы, чтоб оптимизированный механизм реструктуризации заработал. Нужно было, когда режим совместимости убрали, долгая реструктуризация регистра бухгалтерии была. | ||
Ёпрст 39 - 25.01.21 - 20:55 | минус v2 - невозможно отказаться от изменений, как при обычном обновлении. Т.е если запустил, то сиди и жди :) | ||
080808Ник 40 - 26.01.21 - 23:53 | (36) Реализовано в версии 8.3.11.2867. буржуи вы столичные. в нашем селе клиенты на 8.3.10 сидят) |
|
Список тем форума |