|
Запрос к номенклатурнику 60000+ | ☑ | ||
---|---|---|---|---|
0
Мистикан
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 секунды что может быть не так? |
|||
2
scanduta
15.08.18
✎
10:40
|
как замерял?
|
|||
3
Cyberhawk
15.08.18
✎
10:41
|
Пади это не запрос выполняется столько, а вывод результата на экран горе-замерятеля )
|
|||
4
FIXXXL
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 секунды |
|||
10
los_hooliganos
15.08.18
✎
10:49
|
(9) Добавь Н.Представление
|
|||
11
nicxxx
15.08.18
✎
10:49
|
помести результат во временную таблицу, чтобы на клиента ничего не передавалось
|
|||
12
Cyberhawk
15.08.18
✎
10:49
|
Загрузку железа помониторь
|
|||
13
los_hooliganos
15.08.18
✎
10:50
|
(11) Так он и так на Сервере
|
|||
14
Вафель
15.08.18
✎
10:50
|
(10) как это может ускорить?
|
|||
15
Вафель
15.08.18
✎
10:50
|
может запрос скл не все данные возвращает, а неявно делает топ 1000?
|
|||
16
los_hooliganos
15.08.18
✎
10:51
|
Плюс еще запрос более 5000, значит платформа будет ложить полную блокировку на таблицу и ожидает освобождения и полного захвата.
|
|||
17
PR
15.08.18
✎
10:52
|
(0) Права полные?
|
|||
18
Мистикан
15.08.18
✎
10:53
|
(12) сервак тестовый, только я и больше никого (15) в результате запроса все 60263 позиции
|
|||
19
los_hooliganos
15.08.18
✎
10:53
|
(14) 60к+ запросов не должно быть, если запросить Представление вместо ссылки
|
|||
20
Вафель
15.08.18
✎
10:53
|
(16) какую блокировку? 8.3 же в режиме версионирования без блокировки чтения
|
|||
21
Мистикан
15.08.18
✎
10:53
|
(17) Локальный админ
|
|||
22
Nyarlathotep
15.08.18
✎
10:53
|
(0) Запрос 1С <> запрос SQL. Запрос 1С - это команда серверу 1С найти в SQL и вернуть некоторые данные. Сервер получает данные от SQL, из них собирает нужную тебе информацию и возвращает как результат запроса(если упрощенно). Отсюда разница в скорости. Если нужна реально высокая скорость работы - прямые запросы единственный вариант.
|
|||
23
Вафель
15.08.18
✎
10:53
|
(18) как проверяешь что все? они динамически подгружаеются по мере прокручивания
|
|||
25
PR
15.08.18
✎
10:54
|
(21) Какой админ нахрен, в 1С говорю права полные?
|
|||
26
PR
15.08.18
✎
10:55
|
+(25) И сервер 1С на том же серваке, что и скуль?
И что с загрузкой памяти и проца? |
|||
27
Мистикан
15.08.18
✎
10:55
|
(25) да
|
|||
28
los_hooliganos
15.08.18
✎
10:55
|
Топик стартер должен запустить профайлер и тогда увидит истину.
|
|||
29
Мистикан
15.08.18
✎
10:56
|
(26) проц <20%, а вот память 7.4/7.9
|
|||
30
scanduta
15.08.18
✎
10:56
|
(28)+1
|
|||
31
PR
15.08.18
✎
10:57
|
(29) Неважно, важно, сколько в процентах памяти занято, не +90%, надеюсь?
|
|||
32
Junior1s
15.08.18
✎
10:57
|
на (27) ответь плз, это важно
|
|||
33
rphosts
15.08.18
✎
10:57
|
(28) ТС скорее всего не сможет запустить оттого и задает такие вопросы.
|
|||
34
Junior1s
15.08.18
✎
10:58
|
на (26)
|
|||
35
PR
15.08.18
✎
10:58
|
(29) >>И сервер 1С на том же серваке, что и скуль?
Ответ-то будет? |
|||
36
Мистикан
15.08.18
✎
10:58
|
все на одном серваке, и даже на одном RAID
|
|||
37
rphosts
15.08.18
✎
10:58
|
(0) а если запустить под чела с парвами на все данные (что-б никаких нафиг РЛС!)
|
|||
38
rphosts
15.08.18
✎
10:58
|
* под = из под
|
|||
39
PR
15.08.18
✎
10:58
|
(37) А если научиться читать?
|
|||
40
rphosts
15.08.18
✎
10:59
|
и да, замер первого запроса, замер второго запроса (с разогретым кэшем).
|
|||
41
Cyberhawk
15.08.18
✎
10:59
|
Памяти под это все дело 8 Гб отведено, видимо своп дисков
|
|||
42
rphosts
15.08.18
✎
10:59
|
(39) все твои посты? Да ну нафиг!
|
|||
43
PR
15.08.18
✎
11:00
|
Замер скорости, надеюсь, делается на сервере же, непосредственно перед созданием запроса и после выполнения, никаких переходов на клиент не происходит?
|
|||
44
PR
15.08.18
✎
11:00
|
(42) Достаточно (27) прочитать, там ответ на твой вопрос
|
|||
45
Мистикан
15.08.18
✎
11:02
|
(43) да
|
|||
46
PR
15.08.18
✎
11:02
|
Ну и вообще интереса ради сколько будет делаться "ВЫБРАТЬ ПРЕДСТАВЛЕНИЕ ИЗ Справочник.Номенклатура"
|
|||
47
PR
15.08.18
✎
11:04
|
Если очевидные вещи не сработают, то пробуй (28)
|
|||
48
Мистикан
15.08.18
✎
11:07
|
(41) спасибо
добавил 4 гига оперативки, зашевелилось. |
|||
49
PR
15.08.18
✎
11:09
|
(48) Так а сколько из этого жрал скуль?
Ты в курсе, что скуль нужно ограничивать, иначе он убьет все живое? |
|||
50
los_hooliganos
15.08.18
✎
11:09
|
(40) А как разогревать кэш на 1С?
Сделать запрос дважды и делать замер выполнения второго "выполнить"? Вообще это столько разогрев кэша, сколько разогрев оптимизатора и построителя плана запросов. |
|||
51
los_hooliganos
15.08.18
✎
11:11
|
(20) Это я немного с другим механизмом попутал :)
|
|||
52
Мистикан
15.08.18
✎
11:14
|
(49) угу. забыл ограничить... как и сервер приложений... тестовая машина...
|
|||
53
PR
15.08.18
✎
11:18
|
(52) Сервер приложений не нужно огранчичивать, а вот скуль нужно, иначе он жрет как не в себя
|
|||
54
g00d
15.08.18
✎
11:23
|
sql возвращает таблицу, 1c возвращает ссылки. Огромная разница.
|
|||
55
Вафель
15.08.18
✎
11:29
|
(54) в чем?
|
|||
56
Мандалай
15.08.18
✎
11:32
|
Забавно наблюдать когда 1с-ники спорят про sql...
|
|||
57
nicxxx
15.08.18
✎
11:34
|
(55) в том, что надо преобразовать sql binary(16) в ссылку
|
|||
58
nicxxx
15.08.18
✎
11:43
|
(0) Автор, помести результат во временную таблицу.
Вот это у меня работает 100 мс выбрать ссылка поместить вт1 из справочник.финансовыеинструменты а это - 31 мс select _idrref from _Reference16362 |
|||
59
PR
15.08.18
✎
11:53
|
(55) Ты что, тупой, в таблице 7 букв, а в ссылках 6, притом что ссылок много, а таблица одна
|
|||
60
PR
15.08.18
✎
11:53
|
(56) Мы не про sql, а про 1С так-то
|
|||
61
PR
15.08.18
✎
11:54
|
(57) То есть Наименование вместо Ссылка должно все сразу резко ускорить?
|
|||
62
PR
15.08.18
✎
11:55
|
(58) Чтобы у ТС все тоже стало в три раза медленнее работать?
|
|||
63
vitkhv
15.08.18
✎
12:11
|
(58)
а это сколько по времени выполниться в SSMS: drop table if exists #tt go select _idrref into ##tt from _Reference16362 |
|||
64
nicxxx
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. |
|||
65
nicxxx
15.08.18
✎
12:16
|
в справочнике 100 000 записей.
(62) с чего бы у него все стало медленней? у него и так небыстро :) |
|||
66
vitkhv
15.08.18
✎
12:21
|
(64) 50 мс тратится на исполнение запроса,50 мс на трансляцию текста 1с-MSSQL.
А у автора ерунда. |
|||
67
vitkhv
15.08.18
✎
12:23
|
(54) нет там никакой разницы или вы думаете если вам ADO по умолчанию массивы возвращает из бинарника, то и в 1С все также?
|
|||
68
Borteg
15.08.18
✎
12:27
|
(0) План запроса в студию
|
|||
69
vitkhv
15.08.18
✎
12:30
|
(68)вы издеваетесь? В плане запроса там будет одна операция Index Scan
|
|||
70
nicxxx
15.08.18
✎
12:30
|
(0) попробуй вместо устаревших "именнованные каналы" включить shared memory.
|
|||
71
vitkhv
15.08.18
✎
12:34
|
(70) в пору моей юности именованные каналы были на пике технологий.
И автору это не поможет. |
|||
72
vitkhv
15.08.18
✎
12:36
|
(70) о мы с вами недавно спорили про подзапросы на инфостарте
|
|||
73
Borteg
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 на все про все |
|||
74
Borteg
15.08.18
✎
12:56
|
(73) притом это index seek
|
|||
75
PR
15.08.18
✎
13:01
|
(65) С того, что твои замеры показывают, что временная таблица у тебя замедлила все в три раза
|
|||
76
nicxxx
15.08.18
✎
13:01
|
(73) Поэтому я и предлагал автору поместить выборку во временную таблицу, а не гнать все на клиента.
|
|||
77
PR
15.08.18
✎
13:02
|
(76) На какого, блеать, клиента, у него все на сервере
|
|||
78
nicxxx
15.08.18
✎
13:02
|
(75) А у автора замедление было в 20 раз из-за того, что он получал всю выборку на клиента. Я же предлагал использовать временную таблицу только для проверки того, что 1С и SSMS выполняют запрос примерно одинаково.
|
|||
79
PR
15.08.18
✎
13:03
|
(78) Рукалицо
|
|||
80
nicxxx
15.08.18
✎
13:04
|
(79) вроде он сам уже разобрался, дело было в оперативке.
|
|||
81
vitkhv
15.08.18
✎
13:04
|
(78) да верно предложили, для исключения влияния клиента в виде 1С
|
|||
82
vitkhv
15.08.18
✎
13:05
|
(73)
вы различаете использование фильтра и нет? У автора фильтра нет, у вас есть. |
|||
83
PR
15.08.18
✎
13:07
|
(80) Дело было не в оперативке, а в неограниченности скуля
И насколько у него стало пошустрее тоже не уточнил |
|||
84
vitkhv
15.08.18
✎
13:09
|
(73) во т для того чтобы не было по каждой номенклатуре 2 запроса nicxxx и предложил использовать временную таблицу.
Правда некоторые консоли даже при использовании временной таблицы делают неявный запрос к ней. |
|||
85
SergeyKB
15.08.18
✎
13:11
|
(82)
автор не привёл конфу в (73) отбор правильный в учётом разделителя (который не очевидный, но есть во всех типовых) |
|||
86
Borteg
15.08.18
✎
13:12
|
(85) я именно к этом и клоню, что как минимум запросы разные)
|
|||
87
Borteg
15.08.18
✎
13:14
|
(82) вы не поверите - у меня в консоли нету не одного фильтра)
|
|||
88
бигтейсти
15.08.18
✎
13:19
|
И никто не сказал автору собрать трассу и посчитать итоговый duration всех запросов. Вместо этого гадания и тупняки, особенно печенюшка доставляет.
|
|||
89
Borteg
15.08.18
✎
13:20
|
(88) были предложения)но многим и так все понятно)
|
|||
90
vitkhv
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) где?
|
|||
92
vitkhv
15.08.18
✎
13:29
|
(86)
любой запрос вида: select _idrref from _refxxx даст скан индекса и при одинаковом количестве элементов выполниться за одно и тоже время +- |
|||
93
Borteg
15.08.18
✎
13:34
|
(92) в sql да, касательно 1с нет. Как видите запросы разные, мы же не тексты сравниваем,а результат. Как минимум 1с тащит необходимые ему данные независимо от того что написано в консоли,WHERE (T1._Fld11306 = P1)',N'P1 numeric(10)',0 является разделителем данных. И уже не скан произошел. Поэтому считать что выбрать * из в 1с и sql одно и тоже не всегда правильно, как преобразовал этот запрос 1с в sql покажет только профайлер(ну или средства тех журнала например).
|
|||
94
PR
15.08.18
✎
13:35
|
(88) Ой, Мишанька проснулся :))
|
|||
95
vitkhv
15.08.18
✎
13:39
|
(93) если разделитель то да он обязательно входит в индекс.
У меня без разделителя. |
|||
96
vitkhv
15.08.18
✎
13:45
|
(93) и автора как я понял тоже.
|
|||
97
vitkhv
15.08.18
✎
13:49
|
(93) Хотя если у автора ERP разделитель д.б.
|
|||
98
nicxxx
15.08.18
✎
14:19
|
(97) в SSMS ему разделитель не мешает, т.к. там скорость в 20 раз выше, чем в 1С.
|
|||
99
vitkhv
15.08.18
✎
14:33
|
(98) автору не мешает.
|
|||
100
vitkhv
15.08.18
✎
14:36
|
(98) ему и количество озу не должно мешать. особенно на втором и последующем прогоне. Все в кэше будет.
|
|||
101
Мистикан
20.08.18
✎
10:09
|
(83) 0.31сек
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |