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

  1  2   
1С:Предприятие :: 1С:Предприятие 8 общая

Запрос к номенклатурнику 60000+

Запрос к номенклатурнику 60000+
Я
   Мистикан
 
15.08.18 - 10:39
i5/RAID 10 Sata 6g/b. Терминальный сервак,ms sql 2017,сервер приложений(через именнованные каналы). все на одном рейде.
В MS SQL 2017 (ничего не настраивал кроме восстановления и реорганизации индексов)

в 1с запрос типа "Выбрать н.Ссылка Из Справочник.Номенклатура" выполняется 6 секунд.
в SQL SELECT _IDRRef FROM ERP.dbo._Reference287 выполняется 0.3 секунды

что может быть не так?
 
 
   Вафель
 
1 - 15.08.18 - 10:39
а передать на сервер 1с всю инфу?
   scanduta
 
2 - 15.08.18 - 10:40
как замерял?
   Cyberhawk
 
3 - 15.08.18 - 10:41
Пади это не запрос выполняется столько, а вывод результата на экран горе-замерятеля )
   FIXXXL
 
4 - 15.08.18 - 10:44
(0) выполни НаСервере и померь
   Мистикан
 
5 - 15.08.18 - 10:45
разумеется не через консоль запросов.. замер производительности, и раземеется на сервере
   Мистикан
 
6 - 15.08.18 - 10:45
консоль выводит вообще минуту )))
   Вафель
 
7 - 15.08.18 - 10:46
(5) в тз выгружаешь небось?
   Вафель
 
8 - 15.08.18 - 10:46
(6) консоль делает 60к+ запросов на получение наименования
   Мистикан
 
9 - 15.08.18 - 10:48
Запрос = Новый Запрос("ВЫБРАТЬ Н.ССЫЛКА ИЗ СПРАВОЧНИК.НОМЕНКЛАТУРА КАК Н");
Запрос.Выполнить();
6.1-6.3 секунды
   los_hooliganos
 
10 - 15.08.18 - 10:49
(9) Добавь Н.Представление
 
 Рекламное место пустует
   nicxxx
 
11 - 15.08.18 - 10:49
помести результат во временную таблицу, чтобы на клиента ничего не передавалось
   Cyberhawk
 
12 - 15.08.18 - 10:49
Загрузку железа помониторь
   los_hooliganos
 
13 - 15.08.18 - 10:50
(11) Так он и так на Сервере
   Вафель
 
14 - 15.08.18 - 10:50
(10) как это может ускорить?
   Вафель
 
15 - 15.08.18 - 10:50
может запрос скл не все данные возвращает, а неявно делает топ 1000?
   los_hooliganos
 
16 - 15.08.18 - 10:51
Плюс еще запрос более 5000, значит платформа будет ложить полную блокировку на таблицу и ожидает освобождения и полного захвата.
   PR
 
17 - 15.08.18 - 10:52
(0) Права полные?
   Мистикан
 
18 - 15.08.18 - 10:53
(12) сервак тестовый, только я и больше никого (15) в результате запроса все 60263 позиции
   los_hooliganos
 
19 - 15.08.18 - 10:53
(14) 60к+ запросов не должно быть, если запросить Представление вместо ссылки
   Вафель
 
20 - 15.08.18 - 10:53
(16) какую блокировку? 8.3 же в режиме версионирования без блокировки чтения
   Мистикан
 
21 - 15.08.18 - 10:53
(17) Локальный админ
   Nyarlathotep
 
22 - 15.08.18 - 10:53
(0) Запрос 1С <> запрос SQL. Запрос 1С - это команда серверу 1С найти в SQL и вернуть некоторые данные. Сервер получает данные от SQL, из них собирает нужную тебе информацию и возвращает как результат запроса(если упрощенно). Отсюда разница в скорости. Если нужна реально высокая скорость работы - прямые запросы единственный вариант.
   Вафель
 
23 - 15.08.18 - 10:53
(18) как проверяешь что все? они динамически подгружаеются по мере прокручивания
   PR
 
25 - 15.08.18 - 10:54
(21) Какой админ нахрен, в 1С говорю права полные?
   PR
 
26 - 15.08.18 - 10:55
+(25) И сервер 1С на том же серваке, что и скуль?
И что с загрузкой памяти и проца?
   Мистикан
 
27 - 15.08.18 - 10:55
(25) да
   los_hooliganos
 
28 - 15.08.18 - 10:55
Топик стартер должен запустить профайлер и тогда увидит истину.
   Мистикан
 
29 - 15.08.18 - 10:56
(26) проц <20%, а вот память 7.4/7.9
   scanduta
 
30 - 15.08.18 - 10:56
(28)+1
   PR
 
31 - 15.08.18 - 10:57
(29) Неважно, важно, сколько в процентах памяти занято, не +90%, надеюсь?
   Junior1s
 
32 - 15.08.18 - 10:57
на (27) ответь плз, это важно
   rphosts
 
33 - 15.08.18 - 10:57
(28) ТС скорее всего не сможет запустить оттого и задает такие вопросы.
 
 
   Junior1s
 
34 - 15.08.18 - 10:58
на (26)
   PR
 
35 - 15.08.18 - 10:58
(29) >>И сервер 1С на том же серваке, что и скуль?
Ответ-то будет?
   Мистикан
 
36 - 15.08.18 - 10:58
все на одном серваке, и даже на одном RAID
   rphosts
 
37 - 15.08.18 - 10:58
(0) а если запустить под чела с парвами на все данные (что-б никаких нафиг РЛС!)
   rphosts
 
38 - 15.08.18 - 10:58
* под = из под
   PR
 
39 - 15.08.18 - 10:58
(37) А если научиться читать?
   rphosts
 
40 - 15.08.18 - 10:59
и да, замер первого запроса, замер второго запроса (с разогретым кэшем).
   Cyberhawk
 
41 - 15.08.18 - 10:59
Памяти под это все дело 8 Гб отведено, видимо своп дисков
   rphosts
 
42 - 15.08.18 - 10:59
(39) все твои посты? Да ну нафиг!
   PR
 
43 - 15.08.18 - 11:00
Замер скорости, надеюсь, делается на сервере же, непосредственно перед созданием запроса и после выполнения, никаких переходов на клиент не происходит?
   PR
 
44 - 15.08.18 - 11:00
(42) Достаточно (27) прочитать, там ответ на твой вопрос
   Мистикан
 
45 - 15.08.18 - 11:02
(43) да
   PR
 
46 - 15.08.18 - 11:02
Ну и вообще интереса ради сколько будет делаться "ВЫБРАТЬ ПРЕДСТАВЛЕНИЕ ИЗ Справочник.Номенклатура"
   PR
 
47 - 15.08.18 - 11:04
Если очевидные вещи не сработают, то пробуй (28)
   Мистикан
 
48 - 15.08.18 - 11:07
(41) спасибо
добавил 4 гига оперативки, зашевелилось.
   PR
 
49 - 15.08.18 - 11:09
(48) Так а сколько из этого жрал скуль?
Ты в курсе, что скуль нужно ограничивать, иначе он убьет все живое?
 
 Рекламное место пустует
   los_hooliganos
 
50 - 15.08.18 - 11:09
(40) А как разогревать кэш на 1С?
Сделать запрос дважды и делать замер выполнения второго "выполнить"?
Вообще это столько разогрев кэша, сколько разогрев оптимизатора и построителя плана запросов.
   los_hooliganos
 
51 - 15.08.18 - 11:11
(20) Это я немного с другим механизмом попутал :)
   Мистикан
 
52 - 15.08.18 - 11:14
(49) угу. забыл ограничить... как и сервер приложений... тестовая машина...
   PR
 
53 - 15.08.18 - 11:18
(52) Сервер приложений не нужно огранчичивать, а вот скуль нужно, иначе он жрет как не в себя
   g00d
 
54 - 15.08.18 - 11:23
sql возвращает таблицу, 1c возвращает ссылки. Огромная разница.
   Вафель
 
55 - 15.08.18 - 11:29
(54) в чем?
   Мандалай
 
56 - 15.08.18 - 11:32
Забавно наблюдать когда 1с-ники спорят про sql...
   nicxxx
 
57 - 15.08.18 - 11:34
(55) в том, что надо преобразовать sql binary(16) в ссылку
   nicxxx
 
58 - 15.08.18 - 11:43
(0) Автор, помести результат во временную таблицу.

Вот это у меня работает 100 мс
 
выбрать     ссылка 
 поместить вт1 
 из справочник.финансовыеинструменты

а это - 31 мс

select _idrref from _Reference16362
   PR
 
59 - 15.08.18 - 11:53
(55) Ты что, тупой, в таблице 7 букв, а в ссылках 6, притом что ссылок много, а таблица одна
   PR
 
60 - 15.08.18 - 11:53
(56) Мы не про sql, а про 1С так-то
   PR
 
61 - 15.08.18 - 11:54
(57) То есть Наименование вместо Ссылка должно все сразу резко ускорить?
   PR
 
62 - 15.08.18 - 11:55
(58) Чтобы у ТС все тоже стало в три раза медленнее работать?
   vitkhv
 
63 - 15.08.18 - 12:11
(58)
а это сколько по времени выполниться в SSMS:
drop table  if exists #tt
go
select _idrref into ##tt from _Reference16362
   nicxxx
 
64 - 15.08.18 - 12:15
SQL Server Execution Times:
   CPU time = 16 ms,  elapsed time = 1 ms.

SQL Server Execution Times:
   CPU time = 47 ms,  elapsed time = 46 ms.
   nicxxx
 
65 - 15.08.18 - 12:16
в справочнике 100 000 записей.
(62) с чего бы у него все стало медленней? у него и так небыстро :)
   vitkhv
 
66 - 15.08.18 - 12:21
(64) 50 мс тратится на исполнение запроса,50 мс на трансляцию текста  1с-MSSQL.
А у автора ерунда.
   vitkhv
 
67 - 15.08.18 - 12:23
(54) нет там никакой разницы или вы думаете если вам ADO по умолчанию массивы возвращает из бинарника, то и в 1С все также?
   Borteg
 
68 - 15.08.18 - 12:27
(0) План запроса в студию
   vitkhv
 
69 - 15.08.18 - 12:30
(68)вы издеваетесь? В плане запроса там будет одна операция Index Scan
   nicxxx
 
70 - 15.08.18 - 12:30
(0) попробуй вместо устаревших "именнованные каналы" включить shared memory.
   vitkhv
 
71 - 15.08.18 - 12:34
(70) в пору моей юности именованные каналы были на пике технологий.
И автору это не поможет.
   vitkhv
 
72 - 15.08.18 - 12:36
(70) о мы с вами недавно спорили про подзапросы на инфостарте
   Borteg
 
73 - 15.08.18 - 12:54
(69) exec sp_executesql N'SELECT
T1._IDRRef
FROM dbo._Reference56 T1
WHERE (T1._Fld11306 = P1)',N'P1 numeric(10)',0
И по каждой номенклатуре exec sp_executesql N'SELECT
T1._IDRRef,
T1._Description
FROM dbo._Reference56 T1
WHERE ((T1._Fld11306 = P1)) AND (T1._IDRRef = @P2)',N'P1 numeric(10),@P2 varbinary(16)',0,0xB0D410604B958AA411E379D65894563C

Вот и вся магия, время выполнения запроса 0.01 секунда, время выполнения других запросов 15 секунд, в консоле время выполения 0.01, я ждал секунд 30 на все про все
   Borteg
 
74 - 15.08.18 - 12:56
(73) притом это index seek
   PR
 
75 - 15.08.18 - 13:01
(65) С того, что твои замеры показывают, что временная таблица у тебя замедлила все в три раза
   nicxxx
 
76 - 15.08.18 - 13:01
(73) Поэтому я и предлагал автору поместить выборку во временную таблицу, а не гнать все на клиента.
   PR
 
77 - 15.08.18 - 13:02
(76) На какого, блеать, клиента, у него все на сервере
   nicxxx
 
78 - 15.08.18 - 13:02
(75) А у автора замедление было в 20 раз из-за того, что он получал всю выборку на клиента. Я же предлагал использовать временную таблицу только для проверки того, что 1С и SSMS выполняют запрос примерно одинаково.
   PR
 
79 - 15.08.18 - 13:03
(78) Рукалицо
   nicxxx
 
80 - 15.08.18 - 13:04
(79) вроде он сам уже разобрался, дело было в оперативке.
   vitkhv
 
81 - 15.08.18 - 13:04
(78) да верно предложили, для исключения влияния клиента в виде 1С
   vitkhv
 
82 - 15.08.18 - 13:05
(73)
вы различаете использование фильтра и нет?  У автора фильтра нет, у вас есть.
   PR
 
83 - 15.08.18 - 13:07
(80) Дело было не в оперативке, а в неограниченности скуля
И насколько у него стало пошустрее тоже не уточнил
   vitkhv
 
84 - 15.08.18 - 13:09
(73) во т для того чтобы не было по каждой номенклатуре 2 запроса  nicxxx и предложил использовать временную таблицу.
Правда некоторые консоли даже при использовании временной таблицы делают неявный запрос к ней.
   SergeyKB
 
85 - 15.08.18 - 13:11
(82)
автор не привёл конфу

в (73) отбор правильный в учётом разделителя (который не очевидный, но есть во всех типовых)
   Borteg
 
86 - 15.08.18 - 13:12
(85) я именно к этом и клоню, что как минимум запросы разные)
   Borteg
 
87 - 15.08.18 - 13:14
(82) вы не поверите - у меня в консоли нету не одного фильтра)
   бигтейсти
 
88 - 15.08.18 - 13:19
И никто не сказал автору собрать трассу и посчитать итоговый duration всех запросов. Вместо этого гадания и тупняки, особенно печенюшка доставляет.
   Borteg
 
89 - 15.08.18 - 13:20
(88) были предложения)но многим и так все понятно)
   vitkhv
 
90 - 15.08.18 - 13:26
(87) как нет, а это что
WHERE (T1._Fld11306 = P1)',N'P1 numeric(10)',0 

фильтр по полю _Fld11306  тип число(10) в 1С.
   бигтейсти
 
91 - 15.08.18 - 13:27
(89) где?
   vitkhv
 
92 - 15.08.18 - 13:29
(86)
любой запрос вида: select _idrref from _refxxx
даст скан индекса и при одинаковом количестве элементов выполниться за одно и тоже время +-
   Borteg
 
93 - 15.08.18 - 13:34
(92) в sql да, касательно 1с нет. Как видите запросы разные, мы же не тексты сравниваем,а результат. Как минимум 1с тащит необходимые ему данные независимо от того что написано в консоли,WHERE (T1._Fld11306 = P1)',N'P1 numeric(10)',0  является разделителем данных. И уже не скан произошел. Поэтому считать что выбрать * из в 1с и sql одно и тоже не всегда правильно, как преобразовал этот запрос 1с в sql покажет только профайлер(ну или средства тех журнала например).
   PR
 
94 - 15.08.18 - 13:35
(88) Ой, Мишанька проснулся :))
   vitkhv
 
95 - 15.08.18 - 13:39
(93) если разделитель то да он обязательно входит в индекс.
У меня без разделителя.
   vitkhv
 
96 - 15.08.18 - 13:45
(93) и автора как я понял тоже.
   vitkhv
 
97 - 15.08.18 - 13:49
(93) Хотя если у автора ERP разделитель д.б.
   nicxxx
 
98 - 15.08.18 - 14:19
(97) в SSMS ему разделитель не мешает, т.к. там скорость в 20 раз выше, чем в 1С.
   vitkhv
 
99 - 15.08.18 - 14:33
(98) автору не мешает.
   vitkhv
 
100 - 15.08.18 - 14:36
(98) ему и количество озу не должно мешать. особенно на втором и последующем прогоне. Все в кэше будет.
  1  2   

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