|
|
|
8.1 В языке запросов нет аналога WITH ROLLUP?
|
|||
|---|---|---|---|
|
#18+
ПаляСделайте два одинаковых запроса с группировкой.Зачем, простите, для анализа итогов делать ещё и группировку? ПаляДобавьте к одному из них расчёт итогов. Запустите один и второй - посмотрели разницу увидели что разница большая - объяснили почему. затем на разных количествах строк ещё надо убедится что зависимость от итогов существенная и несравнима с тормозом от обхода таблицы языком 1с и обращения к полям.В отличие от ваших предыдущих собеседников, не буду сыпать доказательствами - мне всё равно, будете считать правым или нет. Давайте рассмотрим это как байку. Тестировал я с год назад один отчёт. В отчёте нет ничего особого, а вот база... Там завели 4-е субконто, и даже простые отчёты стали тестами производительности серверов. Тестовое железо - два сервера (железо не особо важно, главное, не рабочие станции, названные "сервер", а двойные ксеоны, памяти 8+, не помню точно, и железный RAID10 из 4х SAS), один 1С:Предприятие 8.1, второй MSSQL2005. Тестировал не отчёт, а запрос для получения данных, за значительный период. 1. Снимаю с запроса для отчёта галочку "Итоги". MSSQL отрабатывает за 3 секунды (отслеживаю нагрузку по дискам, процу и сетевухе), затем жужжит графиком в perfmon 1С секунд 15-20, получаю результат. 2. Ставлю галку "Итоги" на место. MSSQL отрабатывает за 3 секунды (неудивительно), далее 1С зависает наглухо минут на 15. Уходит в жёсткий своп при этом, разумеется (ведь распараллелить один запрос-то как?). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2010, 18:27 |
|
||
|
8.1 В языке запросов нет аналога WITH ROLLUP?
|
|||
|---|---|---|---|
|
#18+
Тестировал не отчёт, а запрос для получения данных, за значительный период. 1. Снимаю с запроса для отчёта галочку "Итоги". MSSQL отрабатывает за 3 секунды (отслеживаю нагрузку по дискам, процу и сетевухе), затем жужжит графиком в perfmon 1С секунд 15-20, получаю результат. 2. Ставлю галку "Итоги" на место. MSSQL отрабатывает за 3 секунды (неудивительно), далее 1С зависает наглухо минут на 15. Уходит в жёсткий своп при этом, разумеется (ведь распараллелить один запрос-то как?). Во! Это уже похоже на разговор! однако ваша фраза Уходит в жёсткий своп при этом, разумеется (ведь распараллелить один запрос-то как?). расстраивает меня неимоверно! этож ерунда полная написана! слово "ведь" подразумевает причинно-следственную связь какую-то... ладно, предположим описка. Ещё важно узнать количество строк в отчете. Дело в том что если количество строк очень большое то собственно их вывод может занять долгое время. В отличие от ваших предыдущих собеседников, не буду сыпать доказательствами - мне всё равно, будете считать правым или нет. Клянусь я вам верю что всё так и было. Хотел бы понять, что такое "тормозят итоги". Зачем, простите, для анализа итогов делать ещё и группировку? Если бы были тестовые данные а не байки то можно было бы попробовать поизучать влияет ли сортировка и группировка на скорость. Смотрите. Для того чтоб реализовать функцию итоги в 1с достаточно выполнить запрос + group by + order by. После этого можно построить дерево итогов за время равное одному пробегу по таблице результатов. Даже тупо свёрткой таблицы итоги можно реализовать средствами 1с за O(N*LOG(N)). Поэтому почему "тормозят" встроенные итоги мне непонятно. Вопрос количества строк важен. Если вы получаете миллион строк в отчете и у вас тормозят итоги то это нормально. у вас будет тормозить и вывод этих милион строк в макет по группам. ничо страшного. надо сравнить процентное соотношение времен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2010, 22:10 |
|
||
|
8.1 В языке запросов нет аналога WITH ROLLUP?
|
|||
|---|---|---|---|
|
#18+
Да. В тесте необходимо проверить что при вычислении итогов не осуществляется обращения к ссылочным объектам для получения представления. Это тоже может тормозить, но собственно к вычислению итогов не относится. (всё равно произойдёт при выводе отчета) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2010, 22:23 |
|
||
|
8.1 В языке запросов нет аналога WITH ROLLUP?
|
|||
|---|---|---|---|
|
#18+
Паля Нет ну причём тут ИТОГИ? То что вы написали ВООБЩЕ ничего не означает. о чём эти наблюдения? Сделайте два одинаковых запроса с группировкой. Добавьте к одному из них расчёт итогов. Запустите один и второй - посмотрели разницу увидели что разница большая - объяснили почему. затем на разных количествах строк ещё надо убедится что зависимость от итогов существенная и несравнима с тормозом от обхода таблицы языком 1с и обращения к полям. Мне лично очевидно, что нет проблем считать итоги на клиенте и во много раз быстрее чем обход таблицы скриптом 1с. если это не так, то просто надо это показать и удивится багу платформы. Ваш пример не демонстрирует ничего. Паля, ключевые слова здесь: Построитель отчета и отчет "Анализ доступности товаров на складах". Расшифрую все по полочкам: Стандартный отчет "Анализ доступности товаров на складах" использует для запроса и его вывода объект ПостроительОтчета (котрый вызывается через Универсальный Отчет) и два его метода: 1. ПостроительОтчета.Выполнить() - выполняется запрос к SQL серверу. 2. ПостроительОтчета.Вывести() - выполненный запрос выводиться в табличный документ. (метод в коде универсального отчета идет следом за ПостроительОтчета.Выполнить(), т.е. никаких промежуточных расчетов не осущевстляется ) В тесте стоят умолчанию настройки для этого отчета, т.е. группировки Склад и Номенклатура, включена галка - выводить итоги. По первому пункту - метод выполнить, выполняет запрос и по скорости был приблизительно равен, скорости выполнения запроса в MS SQL и естественно + время трансляции. По второму пункту - метод вывести, как раз и выводит отчет в Табличный документ, который передается ему в качестве параметра, как раз таки когда бежит бегунок в отчете снизу это и есть время работы этого метода, т.е. никаких кривых ручек подобных предположенными вами вариантами развития событий: Паля В тесте необходимо проверить что при вычислении итогов не осуществляется обращения к ссылочным объектам для получения представления. Это тоже может тормозить, но собственно к вычислению итогов не относится. здесь в принципе быть не может, т.е. обращения к выборке из языка 1С кроме ПостроительОтчета.Вывести(), отсутствуют как класс. Так вот в соответсвии со всем этим можно сделать вывод, что суперагрегирование происходит средствами 1С происходит оно гораздо медленнее чем сам отчет, в тесте указанно, что вывод отчета занимает 98% времени. Сейчас на память (т.к. действо происходило в 2007) могу сказать, что вывод отчета занимал несколько минут. Пусть в отчете даже 10000 позиций наличиствующей номенклатуры, такой вывод занимает непозволительное количество времени. В других более простых отчетах, тот же отчет "Ведомость по товарам на складах" вывод отчета занимал несколько секунд. Поэтому и был сделан вывод о том, что существeт зависимость скорости агрегирования от количества таблиц используемых в запросе. Кстати сам Group By относительно выборки в запросе используется, на что, мне и было указанно постом ниже. Т.е. можно сделать вывод, что потери времени происходят именно на суперагрегировании, т.е. на том , что в MS SQL фактически делает WITH ROLLUP, за исключением вот этого : ДжиннЯ бы хотел посмотреть, как уважаемый критик средствами SQL сделал бы группировку с итогами по иерархии :) этого WITH ROLLUP делать не умеет. Но данная проблема на T-SQL решается другими путями и т.к. в моем тесте группировки по групам не используются данное замечание к скорости выполнения моих тестов не имеет никакого отношения. Да еще забыл добавить, сегодня мой последний день отпуска, который вы мне фактически испортили своей настойчивостью, хотел отдохнуть от изучения SAP и английского и тем более не планировал погружаться в 1С. Да и еще все же более критично подходите к 1С, недостатков, не смотря на все ее достоинства, в ней хватает с избытком. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2010, 23:47 |
|
||
|
8.1 В языке запросов нет аналога WITH ROLLUP?
|
|||
|---|---|---|---|
|
#18+
Паля Во! Это уже похоже на разговор! Паля если вы хотите проводить разговор, а не "сраца по существу" (с) то подобные вашему заявления, здесь неуместны: Паляне надо пихать безграмотные ссылки на никому не нужные мнения дилетанта. Паляэтож ерунда полная написана! и т.п. в более завуалированной форме. В отношении ваших постов, в подобном тоне еще никто из участников обсуждения не позволял себе высказываться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2010, 00:20 |
|
||
|
8.1 В языке запросов нет аналога WITH ROLLUP?
|
|||
|---|---|---|---|
|
#18+
vitkhv Да еще забыл добавить, сегодня мой последний день отпуска, который вы мне фактически испортили своей настойчивостью, хотел отдохнуть от изучения SAP и английского и тем более не планировал погружаться в 1С. А вот это здря конечно. ну его нафик. малоли кто там в интернете неправ :-) vitkhv Расшифрую все по полочкам: Стандартный отчет "Анализ доступности товаров на складах" использует для запроса и его вывода объект ПостроительОтчета (котрый вызывается через Универсальный Отчет) и два его метода: 1. ПостроительОтчета.Выполнить() - выполняется запрос к SQL серверу. 2. ПостроительОтчета.Вывести() - выполненный запрос выводиться в табличный документ. (метод в коде универсального отчета идет следом за ПостроительОтчета.Выполнить(), т.е. никаких промежуточных расчетов не осущевстляется ) (ээ. а без галочки итоги всё быстро работает? ) И опять недоконца разобрались. Метод вывести() слишком много действий делает. в чём проблема и как её решать непонятно. Начали кстати с языка запросов и ИТОГОВ. а вы из слишком высокоуровнего отчета делаете далекоидущие выводы. Пока из ваших слов ясно что в построителе запросов в некоторых случаях отчеты выводится медленно и это может быть связано с итогами. Ну может быть. Может проблема с выводом в макет секции итоги? Не надо никаких построителей. Нужно сделать запрос с итогами и без. c group by и без. (order by и без) и вызвать у запроса метод выгрузить (с группировкой и без. ). Исключить получение представлений по ссылкам. Посчитать время исполнения каждого из двух методов и подумать. Только после этого можно хоть что-нибудь интересное утверждать. Я настаиваю на GROUP BY потому что Totals и GROUP BY работают очень похоже и вообще это почти одно и тоже при выгрузке по группировкам. В тесте необходимо проверить что при вычислении итогов не осуществляется обращения к ссылочным объектам для получения представления. здесь в принципе быть не может, т.е. обращения к выборке из языка 1С кроме ПостроительОтчета.Вывести(), отсутствуют как класс. вы не правы. Очевидно что здесь это самое обращение для получения представления и происходит. в запросе вы получаете ссылку - в таблицу выводится наименование справочника. получение наименования по ссылке должно быть где-то и кем-то осуществлено. и функция вывести это делает и это значительное время. Паля если вы хотите проводить разговор, а не "сраца по существу" (с) то подобные вашему заявления, здесь неуместны: Не принимайте близко к сердцу. я без злобы. Более того. 1) это действительно ерунда (связь свопа и параллельности) 2) ссылка действительно безграмотная (только для зарегестрированных и не разворачивается основной запрос) 3) насчёт дилетанта тут каюсь - это лишнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2010, 01:04 |
|
||
|
8.1 В языке запросов нет аналога WITH ROLLUP?
|
|||
|---|---|---|---|
|
#18+
К сожалению, по отчёту я выдал всё что помню. Результирующих строк было меньше тысячи, иерархические итоги. Кстати, кроме иерархии, стоит также вспомнить итоги по остаткам и оборотам. Ведь они вовсе не тупо суммированием делаются, и тоже прозрачно с помощью WITH ROLLUP не кодируются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2010, 10:57 |
|
||
|
8.1 В языке запросов нет аналога WITH ROLLUP?
|
|||
|---|---|---|---|
|
#18+
Паля (ээ. а без галочки итоги всё быстро работает? ) Проводить такие тесты без галочки, не корректно, т.к. WITH ROLLUP выдает информацию с общими итогами. Паля Начали кстати с языка запросов и ИТОГОВ. а вы из слишком высокоуровнего отчета делаете далекоидущие выводы. Опять же не представляйте мои выводы как далеко идущие, они достаочно ограниченны: ИТОГИ ПО работают не всегда с той производительность которую дает WITH ROLLUP. Паля Я настаиваю на GROUP BY потому что Totals и GROUP BY работают очень похоже и вообще это почти одно и тоже при выгрузке по группировкам. Естественно работают с одинаковой скоростью, ведь Totals использует GROUP BY и мы сравниваем не скорость агрегирования, а скорость суперагрегирования т.е. WITH ROLLUP vs ИТОГИ ПО (Totals). Паля Пока из ваших слов ясно что в построителе запросов в некоторых случаях отчеты выводится медленно и это может быть связано с итогами. Ну может быть. Может проблема с выводом в макет секции итоги? вы не правы. Очевидно что здесь это самое обращение для получения представления и происходит. в запросе вы получаете ссылку - в таблицу выводится наименование справочника. получение наименования по ссылке должно быть где-то и кем-то осуществлено. и функция вывести это делает и это значительное время. Я бы с вами согласился если бы, в том же отчете "Ведомость по товарам на складах", были бы аналогичные проблемы, но таких проблем не наблюдалось. А оба отчета выводят одинаковое количество строк т.к. "Заказы поставщикам" на том предприятии не использовались. Настройки по умолчанию в отчете "Ведомость по товарам на складах" такие же как и в "Анализ доступности" - Группировки Склад, Товар, галочка итоги стоит. Нулевая загрузка SQL сервера тоже показательна, да и в профайлере я такой ужас увидел бы сразу, открытый курсор либо >10 000 запросов по получению "Наименований" номенклатуры не возможно не заметить. Хотя каюсь, мое изначально ошибочное предположение об отсутствии Groop By (видимо, ошибочно отнес последний Groop By к предстоящему Union ALL) в запросе не дало мне сфокусировать внимание на других вещах в частности на запросе по получению представлений :(, и так как такой запрос все же был (в приведенном мною запросе, получения Наименований нет), не выполнялся он несколько минут, иначе я бы его заметил :) ПаляНе надо никаких построителей. В топике идет указание именно на проблемы в построителе отчетов: vitkhv как я понял из своих наблюдений 1С тянет на сервер предприятия выборку и там ее группирует в соответсвии с параметрами указанными в построителе отчетов. и нет никакой экстраполяции результатов на обычные запросы. Хотя если хорошо подумать, можно с проецировать выводы и на обычные 1С запросы в которых используется ИТОГИ ПО. Паля Нужно сделать запрос с итогами и без. c group by и без. (order by и без) и вызвать у запроса метод выгрузить (с группировкой и без. ). Исключить получение представлений по ссылкам. Посчитать время исполнения каждого из двух методов и подумать. Только после этого можно хоть что-нибудь интересное утверждать. Паля, может быть вы подготовите для нас такие тесты? А то ваших постах ровно такие же как и у нас "ничем не подкрепленные" утверждения по типу, "я настаиваю", ну раз настаиваете, все карты вам в руки ;). В частности для меня было бы интересно увидеть, что в этом отношении изменилось с 2007 года. Паляссылка действительно безграмотная (только для зарегестрированных и не разворачивается основной запрос) т.е. вы безграмотность ссылки определяете по тому, требуется ли там регистрация или не требуется? Паля, вы не исправимы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2010, 12:54 |
|
||
|
8.1 В языке запросов нет аналога WITH ROLLUP?
|
|||
|---|---|---|---|
|
#18+
Опять же не представляйте мои выводы как далеко идущие, они достаочно ограниченны: ИТОГИ ПО работают не всегда с той производительность которую дает WITH ROLLUP. Ну это слишком слабое утверждение. ясно дело что не всегда и вообще любая обработка данных в 1с - тормозит неимоверно (по сравнению с нормальными языками или sql сервером) . ЛЮБАЯ. поэтому упоминать о том что тормозят итоги надо не на фоне ролапа а на фоне клиентской обработки.. Имеет смысл соотношение затрат подсчета итогов и других обработок данных (в частности вывод их в макет или просто перебор) на клиенте. В топике идет указание именно на проблемы в построителе отчетов:vitkhv как я понял из своих наблюдений 1С тянет на сервер предприятия выборку и там ее группирует в соответсвии с параметрами указанными в построителе отчетов. и нет никакой экстраполяции результатов на обычные запросы. Хотя если хорошо подумать, можно с проецировать выводы и на обычные 1С запросы в которых используется ИТОГИ ПО. Мне как раз интересно было экстраполировать. К сожалению я вообще не умею работать с построителем отчетов. мне трудно мысленно препарировать его и сообразить в чём проблема. может и в нём ошибка.то что построитель отчета тормозит при выводе на экран - это понятно. то что итоги в запросе занимают некоторое время для расчета - тоже понятно. что значит что "итоги по" "тормозят" - непонятно. WildSery более понятный пример привёл. хотя тоже надо исследовать. может галочка итогов - дополнительную секцию в макете отрисовывает которая и тормозит. да и упоминание о свопе настораживает. Или может по иерархии у него что тоже отдельная песня. как я понял из своих наблюдений 1С тянет на сервер предприятия выборку и там ее группирует в соответсвии с параметрами указанными в построителе отчетов. Ну как вы уже поняли - это не так. Я бы с вами согласился если бы, в том же отчете "Ведомость по товарам на складах", были бы аналогичные проблемы, но таких проблем не наблюдалось. А оба отчета выводят одинаковое количество строк т.к. "Заказы поставщикам" на том предприятии не использовались. Настройки по умолчанию в отчете "Ведомость по товарам на складах" такие же как и в "Анализ доступности" - Группировки Склад, Товар, галочка итоги стоит. Ну надо поизучать почему так. и в чём тут затык. Не понимаю: какое утверждение о скорости работы итогов в 1с вы можете сформулировать на основе этих посылок? :-) (то что они не так быстро как роллап это очевидно и не так быстро как много других операций тоже). (например : Есть два отчета. и там и там стоит галочка итоги. один из них выводит на экран данные 5минут второй 10 секунд => очевидно итоги в 1с работают медленно! доколе!) Паля, может быть вы подготовите для нас такие тесты? я не умею. я бездельник (в смысле теоретег). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2010, 14:14 |
|
||
|
8.1 В языке запросов нет аналога WITH ROLLUP?
|
|||
|---|---|---|---|
|
#18+
ПаляОпять же не представляйте мои выводы как далеко идущие, они достаочно ограниченны: ИТОГИ ПО работают не всегда с той производительность которую дает WITH ROLLUP. Ну это слишком слабое утверждение. ясно дело что не всегда и вообще любая обработка данных в 1с - тормозит неимоверно (по сравнению с нормальными языками или sql сервером) . ЛЮБАЯ. поэтому упоминать о том что тормозят итоги надо не на фоне ролапа а на фоне клиентской обработки.. Теоретически так, но в нашем случае тема, есть ли аналог WITH ROLLUP в 1С. Но по вашему 1С конечно же не причем, скорость работы ее конкретных методов можно только сравнивать с гипотетической клиентской обработкой, все остальные сравнения по вашему некорректны. Паля Vitkhvкак я понял из своих наблюдений 1С тянет на сервер предприятия выборку и там ее группирует в соответсвии с параметрами указанными в построителе отчетов. Ну как вы уже поняли - это не так. Не выдергивайте из контекста, я понял, что это не так еще в 2007 году и лично вы в этом никак не поучаствовали. Паля я не умею. я бездельник (в смысле теоретег). Т.е. вы для себя даже теоритечески не можете допустить мысли, о том что Итоги ПО и были причиной торомзов, виновата конечно же была (конечно только теоретически) отрисовка этого отчета на экране. А все мои аргументы и утверждения конечно же слабы. Палято что построитель отчета тормозит при выводе на экран - это понятно. то что итоги в запросе занимают некоторое время для расчета - тоже понятно. что значит что "итоги по" "тормозят" - непонятно. Ну надо поизучать почему так. и в чём тут затык. Не понимаю: какое утверждение о скорости работы итогов в 1с вы можете сформулировать на основе этих посылок? :-) (то что они не так быстро как роллап это очевидно и не так быстро как много других операций тоже). (например : Есть два отчета. и там и там стоит галочка итоги. один из них выводит на экран данные 5минут второй 10 секунд => очевидно итоги в 1с работают медленно! доколе!) Опять вы передергиваете. Я вам представляю одно утверждение как подкрепление второго, вы берете это подкрепляющее утверждение и делаете из него цирк, как будто первого утверждения и не существует. Т.е. как в анекдоте про Логику - раз спичек нет, значит Импотент. Так же и мои аргументы у вас превращаются в это: Есть два отчета. и там и там стоит галочка итоги. один из них выводит на экран данные 5минут второй 10 секунд => очевидно итоги в 1с работают медленно! С таким подходом общение с вами напрягает и какой либо аргументированный спор с вами становиться просто бессмысленным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2010, 15:57 |
|
||
|
|

start [/forum/topic.php?fid=28&msg=36881282&tid=1521969]: |
0ms |
get settings: |
9ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
164ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 249ms |
| total: | 506ms |

| 0 / 0 |
