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


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

Метки: 

Менеджер против Набора записей для регистров сведений

Я
   Мандалай
 
09.11.17 - 13:54
Добрый день.
Чем плох менеджер в плане производительности при записи одной или нескольких строк?
 
  Рекламное место пустует
   MrStomak
 
1 - 09.11.17 - 13:55
(0) При записи нескольких строк плох тем, что не может записать несколько строк.
   Лефмихалыч
 
2 - 09.11.17 - 13:57
технически, при записи набора, сервер приложений записывает каждую строку по отдельности - да - так, же, как он делает при записи менеджером записи. Но при записи набора он это делает в одной транзакции. При записи туевой хучи менеджеров будет туева хуча транзакций.
   mistеr
 
3 - 09.11.17 - 13:57
Если не ошибаюсь, внутри там все равно набор записей из одной записи. Так что производительность одинаковая.
   Лефмихалыч
 
4 - 09.11.17 - 13:57
(3) да щас!
   Лефмихалыч
 
5 - 09.11.17 - 13:58
Вообще, менеджер хорош тем, что, если руки из жопы, то с его помощью ты весь регистр не угондонишь.
   mistеr
 
6 - 09.11.17 - 14:00
(2) >записывает каждую строку по отдельности
Трассировка это подтверждает? Я не проверял, но уверен, что там один INSERT/UPDATE и массив параметров.

Насчет транзакций, никто не мешает записывать менеджером записи в одной транзакции.
   Ненавижу 1С
 
7 - 09.11.17 - 14:00
(2) зато в начале набор одним запросом сначала очищает записи

а в транзакцию можно и насильно обернуть
   DrShad
 
8 - 09.11.17 - 14:01
(5) в цикле легко )))
   Ненавижу 1С
 
9 - 09.11.17 - 14:01
(6) "Я не проверял, но уверен" - ага
   Мыш
 
10 - 09.11.17 - 14:04
(9) Никогда такого не было, и вот - опять )))
 
  Рекламное место пустует
   Fragster
 
11 - 09.11.17 - 14:06
   mistеr
 
12 - 09.11.17 - 14:10
(9) Да, я поторопился с выводами. Если подумать, то в наборе записей всегда есть отбор, поэтому не массив параметров, а WHERE. Но уверенность в том, что не "каждую строку по отдельности", остается. Какой смысл ставить очевидный барьер производительности?
   Ненавижу 1С
 
13 - 09.11.17 - 14:13
(12) а как будет выглядеть этот запрос, например, при записи набора из 1000 строк?
   Волшебник
 
Модератор
14 - 09.11.17 - 14:14
(4) Он правду говорит.
   Филиал-msk
 
15 - 09.11.17 - 14:16
(12) Смысл в Error: 10739, Severity 15, The number of row value expressions in the INSERT statement exceeds the maximum allowed number of 1000 row values.
   Лефмихалыч
 
16 - 09.11.17 - 14:18
(14) что производительность одинаковая - враньё!
   Лефмихалыч
 
17 - 09.11.17 - 14:19
(12) РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей().Записать()

какой здесь отбор всегда есть?
   Филиал-msk
 
18 - 09.11.17 - 14:21
(17) Естественный (:
   H A D G E H O G s
 
19 - 09.11.17 - 14:24
(17) Здесь отбор на тех, кто свой код тестит на копии и смотрит в результат или не тестит и потом ищет бэкапы.
   mistеr
 
20 - 09.11.17 - 14:24
(15) Для INSERT скорее всего массив параметров. Для UPDATE, DELETE отбор.

(17) Если отбор не установлен, значит будет DELETE без отбора, то есть на весь регистр.

Я имел в виду, что набор обрабатываемых строк всегда можно идентифицировать отбором.
   Ненавижу 1С
 
21 - 09.11.17 - 14:26
(20) "Для INSERT скорее всего массив параметров. Для UPDATE, DELETE отбор."

ты несешь какую-то дичь
   mistеr
 
22 - 09.11.17 - 14:31
(21) Возможно. Просвети, как на самом деле.
   HEKPOH
 
23 - 09.11.17 - 14:32
При сохранении информации при использовании в программном коде объекта МенеджерЗаписи Платформа сама создает объект НаборЗаписей, а его уже записывает
   Ненавижу 1С
 
24 - 09.11.17 - 14:34
(22) я уже писал:
1. один DELETE стирает все старые записи согласно отбора
2. куча INSERT где по одной записи вставляются новые
   mistеr
 
25 - 09.11.17 - 14:38
(24) А UPDATE как?
   mistеr
 
26 - 09.11.17 - 14:38
UPDATE не делается?
   Ненавижу 1С
 
27 - 09.11.17 - 14:39
(25)(26) нет там никаких UPDATE
   Филиал-msk
 
28 - 09.11.17 - 14:41
(24) Если "записать(ложь)", то delete нет, сразу поток insert
   Ненавижу 1С
 
29 - 09.11.17 - 14:42
(28) согласен
   H A D G E H O G s
 
30 - 09.11.17 - 14:43
Набор круче Менеджера только тем, что Delete делается 1 раз. Вот и все. Толпу менеджеров можно обернуть в
НачатьТранзакцию()
и ваш SDD будет жить спокойной жизнью.
   Мандалай
 
31 - 09.11.17 - 15:13
Чет затихло, я думал тыщу постов наберет :)
   Мандалай
 
32 - 09.11.17 - 15:14
Всем спасибо, за ответы.
Я так понял, что мы пришли к единому мнению...
   Fragster
 
33 - 09.11.17 - 17:05
(30) если есть подписки при записи/перед записью, то они в случае наобра также один раз отработают
 
  Рекламное место пустует
   Cyberhawk
 
34 - 09.11.17 - 17:50
(32) Огласи это единое мнение
   Сияющий в темноте
 
35 - 09.11.17 - 22:52
менеджер работает по одной записи,иногда это очень удобно и блокировка идет только в момент записи,то есть можно избежать столкновения транзакций
не всегда хорошо,если одна большая транзакция



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