Вход | Регистрация


1С:Предприятие ::

Метки: 

Поработать за оптимизатора SQL

Я
   H A D G E H O G s
 
16.11.17 - 22:05
Дня доброго.
Есть дилеммка.
Надо удалить из регистра сведений набор записей. Размером 50-5000 записей.
Удалить можно 2 способами:
1) В цикле, по одной записи, по индексированному измерению.
2) 1 раз, набором, по неиндексированному измерению.

Регистр гигантский (миллионы записей).

Блокировка регистра значения критичного значения не имеет. Ну, будет заблокирован, не страшно, пишется он фоновыми и рег заданиями, если запись не удалась - запишется через 3 минуты еще раз.

Замеров сделать не могу, регистр пуст.  Конечно, можно забить синтетикой, но лениво пока.
 
 
   H A D G E H O G s
 
1 - 16.11.17 - 22:05
Еще есть идея - если количество записей меньше, мммм, 100 - цикл, иначе - набор.
   Волшебник
 
Модератор
2 - 16.11.17 - 22:06
> регистр пуст
> Регистр гигантский (миллионы записей).

Вы уж определитесь
   Волшебник
 
Модератор
3 - 16.11.17 - 22:07
Озвучьте задачу с самого начала. Может там и регистр не нужен...
   H A D G E H O G s
 
4 - 16.11.17 - 22:08
(2) Простите, не до конца расписал ситуацию. На данный момент проектирования системы - он пуст. Через месяц промышленной эксплуатации он будет содержать миллионы записей.
   Волшебник
 
Модератор
5 - 16.11.17 - 22:14
(4) Глупый регистр. Он не нужен.
   VS-1976
 
6 - 16.11.17 - 22:18
Если нет индекса то отбор не установить. Даже если и ухитриться сделать delete from ... where реквизит то будет fullscan. Явно неправильно спроектировал что-то...
   Волшебник
 
Модератор
7 - 16.11.17 - 22:22
Зачем регистрировать миллионы записей, чтобы потом их быстро удалять? Автор — плохой архитектор систем.
   vde69
 
Модератор
8 - 16.11.17 - 22:24
(4) 2...3 ляма для регистра сведений - это не много даже если в измерение запихнуть строку в 1000 символов...
   vde69
 
Модератор
9 - 16.11.17 - 22:25
(8) + большой - это года под 100 лямов...
   H A D G E H O G s
 
10 - 16.11.17 - 22:26
(8) При самом пессимистичном сценарии он будет увеличиваться на миллион в день.
 
 Рекламное место пустует
   vde69
 
Модератор
11 - 16.11.17 - 22:27
при решении этой задачи, кроме всего прочего, нужно учитывать оптимальный размер транзакции по свободной памяти...
   H A D G E H O G s
 
12 - 16.11.17 - 22:27
Очищаться - нуу, даже не знаю, все, что старше 3 лет, возможно. Пока не думал, надо советоваться с методистами.
   VS-1976
 
13 - 16.11.17 - 22:27
Расскажи о регистре подробнее чтобы было понятно и что за измерения, по каким измерениям предполагаются отборы и по каким(ом) измерениям удаления и зачем удаления?
   Tateossian
 
14 - 16.11.17 - 22:28
Делать справочник, он проще с точки зрения архитектуры. Там по хорошему после удаления регистра нужно делать ребилд индекса.
   vde69
 
Модератор
15 - 16.11.17 - 22:29
(14) бред...
   H A D G E H O G s
 
16 - 16.11.17 - 22:30
(14) Справочник - бред. А вот про обновление статистики - есть мысль как то автоматом запускать job после массовых обновлений регистра.
   vde69
 
Модератор
17 - 16.11.17 - 22:32
я склоняюсь к стабильному по скорости и прогнозируемому варианту - удалении в цикле.

скорее всего это будет медленее чем отбором, но будет иметь ряд плюсов
1. на него не будет влиять статистика и оптимизация
2. транзакцию можно будет разбить на несколько
3. можно замутить прогресс бар

и т.д.

но конечно я тонкостей задачи не знаю...
   H A D G E H O G s
 
18 - 16.11.17 - 22:34
(17) Да, тоже сейчас это осознал понял.
Чертовы стереотипы 1С :-)
   vde69
 
Модератор
19 - 16.11.17 - 22:34
(16) для твоей задачи не имеет смысла запускать статистику чаще 1 раз в сутки....

вот ребилдинг индекса - наверно стоит, но его на рабочем нельзя запускать, только ночью
   H A D G E H O G s
 
20 - 16.11.17 - 22:35
Стереотип: "Видишь Отбор и НаборЗаписей - используй его, не думай!"
   H A D G E H O G s
 
21 - 16.11.17 - 22:37
(19) Стоит. Когда у меня еще была база с синтетикой на миллионы записей, изменение 100 тыс записей рушило весь красивый план запроса до обновления статистики.
   H A D G E H O G s
 
22 - 16.11.17 - 22:38
(21) Но это немного другая проблема.
   H A D G E H O G s
 
23 - 16.11.17 - 22:40
Кто нибудь запускал процедуры SQL из 1С через ВнешниеИсточникиДанных, например через:

ВнешнийИсточникДанныхМенеджер.<Имя внешнего источника> (ExternalDataSourceManager.<Имя внешнего источника>)
<Имя функции> (<Function name>)
Синтаксис:

<Имя функции>()
Возвращаемое значение:

Тип: Произвольный.

Описание:

Вызывает функцию внешнего источника данных.

Доступность:

Сервер, толстый клиент, внешнее соединение.
   vde69
 
Модератор
24 - 16.11.17 - 22:40
я сегодня разбирался с файловыми базами 7.7, ну и перетаскивал, все что в каталогах было растаскивал по смылу...


в одно из каталоге который хранился в базе (и бекапился) нашел 600 000 документов, сканы, и т.д. Вот где я репу чесал :)

а Вы регистр большой :)
   vde69
 
Модератор
25 - 16.11.17 - 22:42
(23) поставь на регистр тригер со счетчиком и временной процедурой, пусть SQL сам считает сколько изменений прошло и запускает регламент
   H A D G E H O G s
 
26 - 16.11.17 - 22:45
(25) Тоже вариант, только я не знаю, как его делать. Но узнаю.
   trdm
 
27 - 16.11.17 - 22:45
(24) > в одно из каталоге который хранился в базе (и бекапился) нашел 600 000 документов, сканы, и т.д. Вот где я репу чесал :)

И в чем была проблема?
   H A D G E H O G s
 
28 - 16.11.17 - 22:46
(27) Каталог долго открывался в проводнике.
   VS-1976
 
29 - 16.11.17 - 22:47
Можно ещё попробовать обновлять записи вместо удаления и выключить активность. Посмотреть может активность в индексе
   vde69
 
Модератор
30 - 16.11.17 - 22:47
(27) зачем это лежало в каталоге файловой 7.7... при наличии специального сервера для документооборота
   H A D G E H O G s
 
31 - 16.11.17 - 22:50
(29) Активность есть только у РС, подчиненных регистратору.
   trdm
 
32 - 16.11.17 - 22:51
хз. у меня файлов в 10 раз меньше. 60 тысяч. тоже в каталоге.
   trdm
 
33 - 16.11.17 - 22:53
+(32) сканы документов и картинки незачем хранить на серведе документооборота.
правда я функций сервера не знаю. однако мне нужно обрабатывать свежие файлы: паковать их и отсылать на сайт.
 
 
   VS-1976
 
34 - 16.11.17 - 22:54
(31) да она по моему у всех есть по умолчанию в физических таблицах. А 1с всегда фильтрует по этому полю. Не факт для 8.1 было так, сейчас не знаю.
   youalex
 
35 - 16.11.17 - 23:33
(0)
А это обязательно делать в 1С? Какая функциональная нагрузка у этой таблицы?

Неиндексированных измерений не бывает. Бывает отдельный индекс по индексированным.
   youalex
 
36 - 16.11.17 - 23:39
(26) >> Тоже вариант, только я не знаю, как его делать.

Триггеры классный механизм, который можно вешать поверх, сильно напоминает подписки. Нужно только проверить, не убьет ли триггер реструктуризация. Предполагаю. что полная точно убьет.
   H A D G E H O G s
 
37 - 16.11.17 - 23:40
(35) "А это обязательно делать в 1С? "

Без разницы, в чем это будет.
Разница в том, что вне 1С 2-ой некластерный индекс для данного измерения, по которому строится отбор можно сократить, не включив в него остальные измерения, но это сомнительное достижение, чтобы отказываться от "легкости 1С".

Это - коробочное решение, а ВнешниеИсточникиДанных требуют заморочек с подключением, которые ниасилят простые пользователи.
   youalex
 
38 - 16.11.17 - 23:51
(37) Не очень понял мысль. Но, если вы создадите на свою таблицу произвольный индекс средствами скуля, то самому скулю будет, мягко выражаясь, безразлично какие галки протыканы в 1С. Без хинта он выберет тот индекс, который сочтет более оптимальным согласно статистике.
Разве что только (предполагаю)  кластерность будет играть  - то бишь измерения по порядку.

Интересно было бы узнать все же структуру этого регистра и его предназначение. Если абстрагироваться от 1С
   VladZ
 
39 - 17.11.17 - 04:28
(4) Я бы не стал пихать такие объемы в 1с. Какая информация там должна содержаться? Нужна ли привязка к объектам 1с? Возможно, стоит задуматься о внешней БД. Например, на MS SQL развернуть свою базу. MS SQL потянет практически любые объемы.



Список тем форума
Рекламное место пустует Рекламное место пустует
Независимо от того, куда вы едете — это в гору и против ветра!
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует