|
ТЧ и ТЗ в ОФ - скорости вопрос | ☑ | ||
---|---|---|---|---|
0
ДенисЧ
05.05.16
✎
12:39
|
Есть обработка с ТЧ, лежащей на форме.
Унутре делается тз = ПостроительОтчета.Результат.Выгрузить(); тч.Загрузить(тз); //Не смейтесь, тяжёлое наследие тоталитаризьма... Так вот, на объёмах от 5-7 тыщ записей начинается ощутимое торможение, хотя сам запрос выполняется меньше секунды. Отсюда вопрос - куда копать? ЗЫ. ДС пока не предлагать, конфа в режие совместимости 8.1 ... |
|||
1
vicof
05.05.16
✎
12:45
|
Дс и не поможет, он предназначен для отображения небольшого количества записей
|
|||
2
ДенисЧ
05.05.16
✎
12:46
|
(1) ДС будет тянуть порциями, а не все 5000 записей...
|
|||
3
vicof
05.05.16
✎
12:46
|
Нафейхоа пользователю 7 тыщ записей?
|
|||
4
Йохохо
05.05.16
✎
12:46
|
обновлять построчно обходом результата, доли секунды вместо падения по памяти на 50к строк примитивных типов
|
|||
5
ДенисЧ
05.05.16
✎
12:47
|
(3) Чтобы одновременно видеть документы как марта, так и мая.
|
|||
6
vicof
05.05.16
✎
12:48
|
(2) проверял? Я вот на больших объёмах записей, особенно при скроллинге, в дс вижу сплошные тормоза.
|
|||
7
Лефмихалыч
05.05.16
✎
12:49
|
(0) а если итоги все убить, воспроизводится?
|
|||
8
vicof
05.05.16
✎
12:49
|
(5) может, ты ему отчёт состряпаешь? Я за месяц столько документов не просмотрю.
|
|||
9
Лефмихалыч
05.05.16
✎
12:50
|
(3) чтобы крЫЖЫТЬ!
|
|||
10
ДенисЧ
05.05.16
✎
12:55
|
(8) Это не отчет, это АРМ
(7) какие итоги? |
|||
11
Лефмихалыч
05.05.16
✎
13:00
|
(10) в запросе есть ИТОГИ ПО? Вот если сделать так, чтобы их не было, выгружаться так же долго будет?
|
|||
12
ДенисЧ
05.05.16
✎
13:01
|
(11) нет итогов. Это плоская таблица а-ля журнал документов, только с кучей дополнительных приплюшек
|
|||
13
Лефмихалыч
05.05.16
✎
13:02
|
(12) а которая из двух строк-то медленно делается? Или обе?
|
|||
14
ДенисЧ
05.05.16
✎
13:03
|
(13) Выгрузка результата
|
|||
15
Лефмихалыч
05.05.16
✎
13:04
|
(14) а если Выгрузить() на сервере? На клиента так же долго идти будет?
|
|||
16
ДенисЧ
05.05.16
✎
13:05
|
(15) ОФ же. Научи меня запускать код внешней обработки на сервере...
|
|||
17
Лефмихалыч
05.05.16
✎
13:06
|
(16) внешняя обработка может вызывать то, что выполняется только на сервере. Этому же, надеюсь, не надо учить? Или у тебя доступа в код нет?
|
|||
18
ДенисЧ
05.05.16
✎
13:07
|
(17) Мне не хочется лезть в общие модули... Там такого наворочено.
Да и не думаю, что будет быстрее. Ибо сейчас, в тестовом режиме скуль и сервер 1с работают на одном компе. И клиент там же. |
|||
19
Лефмихалыч
05.05.16
✎
13:09
|
(18) 5-7 тысяч - это слишком мало. На продуктиве это воспроизводится? Может дело именно в тестовом сервере?
Или 5-7 тысяч - это не строк, а колонок? Это бы всё объяснило... |
|||
20
ДенисЧ
05.05.16
✎
13:11
|
(19) На продуктиве всё ещё хуже. Там немного больше пользователей в базе. На пару порядков ))
|
|||
21
Лефмихалыч
05.05.16
✎
13:13
|
(20) происходящее у тебя там подозрительно бессмысленно
|
|||
22
ДенисЧ
05.05.16
✎
13:33
|
(21) Обоснуй
|
|||
23
Лефмихалыч
05.05.16
✎
13:38
|
(22) ну - чудеса в смысле. Либо железо древнее, как яйца мамонта, либо оно сконфигурировано через ДПО (например, оперативы мало и всё в свопе живет), либо не должно такого быть. Даже 10К строк - это пыль и на сервере не может оно тормозить.
|
|||
24
Лефмихалыч
05.05.16
✎
13:39
|
Д - в смысле "дамский"
|
|||
25
ДенисЧ
05.05.16
✎
14:31
|
А если такой вариант: отказаться от ТЧ и сделать все на форме списка документов?
Будет лучше? |
|||
26
4St
05.05.16
✎
14:42
|
(25) Можно и на форме, в "ПриПолученииДанных". Выборка явно будет меньше. Минус - невозможна фильтрация/поиск по добавленным к основному списку полям. Если она не критична, то и ладно.
|
|||
27
4St
05.05.16
✎
14:50
|
(10) Вообще 7К строк для АРМ - не многовато ли?
В выборке точно нет реквизитов типа неограниченной строки или ХранилищеЗначения? Сколько вообще колонок в таблице? |
|||
28
ДенисЧ
05.05.16
✎
14:53
|
(27) 1. нет. Перевозки могут длиться по 2-3 месяца. Так что период нужен большой
2. нет 3. ~45 |
|||
29
4St
05.05.16
✎
14:59
|
(28) тз = ПостроительОтчета.Результат.Выгрузить(тч.Загрузить(тз));
Когда-то тестил подобное, по-моему, это самый шустрый вариант оказался. |
|||
30
ДенисЧ
05.05.16
✎
15:01
|
(29) Что это за нелепая конструкция?
|
|||
31
4St
05.05.16
✎
15:02
|
Ну ты понял )
тч.Загрузить(ПостроительОтчета.Результат.Выгрузить()); |
|||
32
Fragster
гуру
05.05.16
✎
15:03
|
представления тормозят?
|
|||
33
Fragster
гуру
05.05.16
✎
15:03
|
текст запроса построителя какой?
|
|||
34
Fragster
гуру
05.05.16
✎
15:04
|
настоящий, я имею ввиду
|
|||
35
ДенисЧ
05.05.16
✎
15:04
|
(32) Кстати я пробовал, например вместо Организация в запросе выбрать ПРЕДСТАВЛЕНИЕ(Организация). +5% к тормозам...
|
|||
36
ДенисЧ
05.05.16
✎
15:04
|
(34) 5 экранов. Что тебя в нём интересует? Запрос выполняется <2сек. А выгружается > 8
|
|||
37
4St
05.05.16
✎
15:05
|
(28) Не Деловые Линии часом? ))
|
|||
38
ДенисЧ
05.05.16
✎
15:05
|
(37) Мы по сравнению с ними сосунки. У них 5000 человек, у нас всего 200 )))
|
|||
39
Fragster
гуру
05.05.16
✎
15:10
|
(35) в замере затуп на "загрузить"? или в замере все ок и тормозит на возврате в "визуальную" часть?
|
|||
40
4St
05.05.16
✎
15:10
|
(38) Я просто представил, как 5000 человек будут разом обновлять АРМ )))
Кстати, они вообще запретили в своих АРМ показывать более 100 строк. Как только в запросе появляется 101-я, пользователю предлагается сузить выборку. |
|||
41
Fragster
гуру
05.05.16
✎
15:10
|
(36) есть ли в реально выполняемом запросе представления. ну и профайлером скуля и прокмоном можно еще попробовать снять, что 1ска в этот момент делает.
|
|||
42
ДенисЧ
05.05.16
✎
15:11
|
(39) В замере затуп на Выгрузить(). Я уже написал. ПРофайлер на это ничего не показывает.
|
|||
43
Лефмихалыч
05.05.16
✎
15:11
|
(25) будет. ДокументСписок порционно читает данные. Но там отборы только по И. Если подходит - делай
|
|||
44
ДенисЧ
05.05.16
✎
15:12
|
(40) Вот когда ребята-админы заметили, что при каждом обновлении сервер читает по 8 лямов строк, тогда и возникла эта задачка...
Запросы были бешеные. Но я доился ускорения их на порядок... |
|||
45
ДенисЧ
05.05.16
✎
15:12
|
(41) Явно ПРЕДСТАВЛЕНИЕ нигде нет
|
|||
46
ДенисЧ
05.05.16
✎
15:13
|
(43) Да и у меня сейчас только И
|
|||
47
Fragster
гуру
05.05.16
✎
15:14
|
(42) а если использовать
1: построитель запроса 2: где будет затуп при таком варианте: рез = ПостроительОтчета.Результат; тз = рез.Выгрузить(); тч.Загрузить(тз); |
|||
48
ДенисЧ
05.05.16
✎
15:15
|
(47) Ща попробую
|
|||
49
Лефмихалыч
05.05.16
✎
15:15
|
(46) пробуй тогда. Возможно понадобится подкинуть индексов под то, по чем отбираешь.
Правда мне не понятно, что там делают 7 экранов запроса, если тот же самый список можно отборами из ДокументСписка получить |
|||
50
4St
05.05.16
✎
15:17
|
(49) там длинные отгрузки. Хренова гора всяких статусов, отметок, ФИО водителей, номера контейнеров, квитанции и т.д.
|
|||
51
ДенисЧ
05.05.16
✎
15:18
|
(47) Хм... На Результат... Странно...
Надо копать дальше... |
|||
52
4St
05.05.16
✎
15:18
|
(48) А еще интересно
ЗначениеВФайл("c:\temp\123.tx_",ТЗ) Каков будет размер файла? |
|||
53
Fragster
гуру
05.05.16
✎
15:18
|
(51) значит таки запрос ;)
|
|||
54
4St
05.05.16
✎
15:19
|
а, все, снимаю вопрос ))
|
|||
55
Лефмихалыч
05.05.16
✎
15:19
|
(51) таки откуда тогда уверенность, что профайлер не покажет ни чего?
|
|||
56
ptiz
05.05.16
✎
15:19
|
(0) Что-то странное.
У себя в одной обработке сделал ТЧ.Загрузить(ТЗ) - 1 секунда 6000 строк и 115 колонок. |
|||
57
Fragster
гуру
05.05.16
✎
15:20
|
(56) да запрос у него тормозит
|
|||
58
Лефмихалыч
05.05.16
✎
15:25
|
(57) что, в общем, странно, ведь запрос должен выполняться, когда кастуешь Выполнить(), а не когда к результату обращаешься. Построитель - гадкий тип...
|
|||
59
Fragster
гуру
05.05.16
✎
15:27
|
(58) ПостроительЗапроса (QueryBuilder)
Выполнить (Execute) Синтаксис: Выполнить() Описание: Выполняет запрос и записывает результат в свойство Результат. Доступность: Сервер, толстый клиент, внешнее соединение. Примечание: Выставляет внутренний флаг необходимости перевыполнения запроса при получении результата запроса. |
|||
60
Fragster
гуру
05.05.16
✎
15:28
|
короче, если не делать Выполнить(), то запрос выполнится при обращении к .Результат. А если делать - то при Выполнить()
|
|||
61
ДенисЧ
05.05.16
✎
15:28
|
(53) Запрос в консоли выполняется 1.7 сек
|
|||
62
Fragster
гуру
05.05.16
✎
15:29
|
(61) сообщить(Построитель.ПолучитьЗапрос().Текст)
|
|||
63
Лефмихалыч
05.05.16
✎
15:30
|
(61) это хорошо или плохо? Запрос получен методом ПолучитьЗапрос() или нет?
|
|||
64
ДенисЧ
05.05.16
✎
15:30
|
(60) Двумя строками выше стоит выполнить() и занимает 0.0% времени
|
|||
65
ДенисЧ
05.05.16
✎
15:31
|
(63) Нет, перед выполнением Построитель.Запрос.Текст
По сравнению с тем, что было - это очень хорошо |
|||
66
Fragster
гуру
05.05.16
✎
15:31
|
(64) ну, значит "оптимизировали"
|
|||
67
Лефмихалыч
05.05.16
✎
15:31
|
(65) ты в консоли не тот текст тестировал
|
|||
68
Fragster
гуру
05.05.16
✎
15:31
|
зачем выполнять, если нет обращения к результату, и все такое...
|
|||
69
ДенисЧ
05.05.16
✎
15:33
|
(67) Сравнил. Однаковые вплоть до пробелов
|
|||
70
Fragster
гуру
05.05.16
✎
15:34
|
Запрос = Построитель.ПолучитьЗапрос();
Рез = Запрос.Выполнить(); ... |
|||
71
Fragster
гуру
05.05.16
✎
15:35
|
(69) может быть потому что это построитель отчета а не запроса и он таки добавляет колонки с представлением?
|
|||
72
Fragster
гуру
05.05.16
✎
15:35
|
при обращении к результату
|
|||
73
Лефмихалыч
05.05.16
✎
15:36
|
(71) тьху! Биомать... В самом же начале же...
|
|||
74
Fragster
гуру
05.05.16
✎
15:38
|
(73) я хз, все не читал. однако то, что тормозит запрос мы уже выяснили.
|
|||
75
Fragster
гуру
05.05.16
✎
15:39
|
и вообще, я атвору не верю, он мне пиво должен
|
|||
76
ДенисЧ
05.05.16
✎
15:39
|
(71) Проверил через ПолуитьЗапрос() - нет представлений
|
|||
77
ДенисЧ
05.05.16
✎
15:40
|
(75) Когда в Питере буду - поставлю. Я не забыл.
|
|||
78
Fragster
гуру
05.05.16
✎
15:40
|
(76) а вариант (70) проверил?
|
|||
79
ДенисЧ
05.05.16
✎
15:40
|
(74) в консоли 1.5 секунды, в построителе 3. С чего бы?
|
|||
80
ДенисЧ
05.05.16
✎
15:41
|
(78) Да. Разница в сотых долях секунды
|
|||
81
Fragster
гуру
05.05.16
✎
15:42
|
(79) с того, что при обращении к .Результат может происходить выполнение запроса
|
|||
82
Лефмихалыч
05.05.16
✎
15:42
|
(79) про - што? про - файлер.
|
|||
83
Fragster
гуру
05.05.16
✎
15:43
|
(80) на какой строке тормозит:
Запрос = ПостроительОтчета.ПолучитьЗапрос(); Рез = Запрос.Выполнить(); тз = Рез.Выгрузить(); тч.Загрузить(тз); |
|||
84
ДенисЧ
05.05.16
✎
15:44
|
(83) на второй
(81) а в консоли оно не происходит? |
|||
85
Fragster
гуру
05.05.16
✎
15:46
|
(84) т.е. тормозит запрос, а не выгрузка?
тогда нам нужен запрос.текст. ну, или сделай сам на получившемся запросе https://www.youtube.com/watch?v=QqM8qXGcUVU там есть замер по подзапросам |
|||
86
Fragster
гуру
05.05.16
✎
15:48
|
(84) мы же хз, какой ты там текст в консоль пихаешь. Построитель.Текст - это не текст запроса, выполняемого построителем, это болванка
|
|||
87
ptiz
05.05.16
✎
15:54
|
Чтобы не было разночтений: метод .Выполнить() тормозить не может, т.к. запрос выполняется только при обращении к свойству .Результат или при выполнении метода .Вывести()
|
|||
88
Карупян
05.05.16
✎
16:01
|
Может там всяких свойств и значений?
|
|||
89
ДенисЧ
05.05.16
✎
16:02
|
В общем я понял.
Построитель тормозит на сборке результата, выкидывает лишние поля и параметры. Буду этим играться. Всем спасибо за внимание. |
|||
90
Карупян
05.05.16
✎
16:03
|
Ну выкидывание не должно тормозить
|
|||
91
ptiz
05.05.16
✎
16:04
|
(89) Замени Построитель.Результат на:
Запрос = Построитель.ПолучитьЗапрос() Результат = Запрос.Выполнить(); и убедишься, что тормозит именно Запрос.Выполнить() |
|||
92
Fragster
гуру
05.05.16
✎
16:10
|
(91) он уже заменил и убедился
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |