|
|
|
8.1 В языке запросов нет аналога WITH ROLLUP?
|
|||
|---|---|---|---|
|
#18+
Конструкция WITH ROLLUP, применяемая с GROUP BY, позволяет добавить строку с суммой значений всех предыдущих строк. Если ее в 1С все же нет, то вопрос в том, как решить эту задачу, модернизировав запрос "малой кровью". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2010, 17:10 |
|
||
|
8.1 В языке запросов нет аналога WITH ROLLUP?
|
|||
|---|---|---|---|
|
#18+
cyxКонструкция WITH ROLLUP, применяемая с GROUP BY, позволяет добавить строку с суммой значений всех предыдущих строк. если речь о платформе 8.Х, то попробуй ИТОГИ ... Предложение ИТОГИ позволяет определить, расчет каких итогов необходим в запросе. При расчете итогов вычисляются значения агрегатных функций по выборкам с одинаковыми значениями полей – контрольных точек. Итоги добавляются в результат запроса как итоговые строки. Порядок расчета итогов запроса описывается в соответствии со следующими правилами: <Описание итогов> <Итоги> [<Описание итогов>] <Итоги> ИТОГИ [<Список итоговых_полей>] ПО [ОБЩИЕ] <Список контрольных точек> <Список итоговых_полей> <Итоговое_поле> [,<Список_итоговых_полей> [, …]] <Итоговое_поле> <Агрегатная_функция> | <Выражение> [[КАК] <Псевдоним_поля>] <Список контрольных точек> <Контрольная точка> [, <Контрольная точка> [, …]] <Контрольная точка> <Выражение> [[ТОЛЬКО] ИЕРАРХИЯ] | [ПЕРИОДАМИ(Секунда | Минута | Час | День | Неделя | Месяц | Квартал | Год | Декада | Полугодие [,<Литерал типа DATE> | <Идентификатор параметра>] [,<Литерал типа DATE> | <Идентификатор параметра>])] [[КАК] Псевдоним поля] Описание итогов начинается с обязательного ключевого слова ИТОГИ. <Список агрегатных функций> содержит перечень агрегатных функций, которые необходимо рассчитывать в итогах. Агрегатные функции рассматриваются в Агрегатные функции языка запросов. Ключевое слово ОБЩИЕ означает, что необходимо сформировать итоговую строку по всему результату запроса. Подробнее расчет общих итогов описан в Расчет общих итогов. Помимо общих итогов, можно задать расчет итогов по контрольным точкам. Для этого после обязательного ключевого слова ПО необходимо указать <Список контрольных точек>. Каждая <Контрольная точка> содержит <Выражение>, вычисляемое при выполнении запроса. По каждой комбинации значений этих выражений будут рассчитаны и добавлены в результат запроса итоговые строки. Если контрольная точка является ссылкой на справочник, возможен расчет итогов по иерархии справочника. Для этого после такой ссылки надо указать обязательное ключевое слово ИЕРАРХИЯ. Иерархические итоги описаны в Итоги по иерархии. Если контрольная точка является полем - субконто регистра бухгалтерии, то при получении итогов по этой контрольной точке будут игнорироваться значения NULL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2010, 17:20 |
|
||
|
8.1 В языке запросов нет аналога WITH ROLLUP?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2010, 18:01 |
|
||
|
8.1 В языке запросов нет аналога WITH ROLLUP?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2010, 18:21 |
|
||
|
8.1 В языке запросов нет аналога WITH ROLLUP?
|
|||
|---|---|---|---|
|
#18+
Ссылка ни то, ни сё. Перлы так и сыпят, типа "А сейчас в 1С расчет итогов - узкое место, так как происходит на клиенте" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2010, 19:47 |
|
||
|
8.1 В языке запросов нет аналога WITH ROLLUP?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2010, 19:51 |
|
||
|
8.1 В языке запросов нет аналога WITH ROLLUP?
|
|||
|---|---|---|---|
|
#18+
WildSeryСсылка ни то, ни сё. Перлы так и сыпят, типа "А сейчас в 1С расчет итогов - узкое место, так как происходит на клиенте" Такие операции на клиенте не есть гуд или вы думаете иначе? Хотя по моим наблюдениям такие расчеты производяться на сервере 1С. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2010, 21:02 |
|
||
|
8.1 В языке запросов нет аналога WITH ROLLUP?
|
|||
|---|---|---|---|
|
#18+
vitkhvWildSeryСсылка ни то, ни сё. Перлы так и сыпят, типа "А сейчас в 1С расчет итогов - узкое место, так как происходит на клиенте" Такие операции на клиенте не есть гуд или вы думаете иначе? Хотя по моим наблюдениям такие расчеты производяться на сервере 1С. Такие операции есть "ПОХ" где производятся. это копейка. и не надо пихать безграмотные ссылки на никому не нужные мнения дилетанта. Если у вас есть проблемы с производительностью итогов то предложите их предметно к обсуждению, а не так что "есть такое мнение". Предметно - это запросы, версии 1с, результат в ms. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2010, 10:39 |
|
||
|
8.1 В языке запросов нет аналога WITH ROLLUP?
|
|||
|---|---|---|---|
|
#18+
ПаляЕсли у вас есть проблемы с производительностью итогов то предложите их предметно к обсуждению, а не так что "есть такое мнение". Предметно - это запросы, версии 1с, результат в ms. Там есть и запрос в 1С и трасса в профайлере. Или для вас в том топике слишком много букф? Паля Такие операции есть "ПОХ" где производятся. это копейка. Копейка? 90 % от общего времени выполнения запроса! Насколько я помню у меня данный запрос выполнялся несколько минут, а это запрос из стандартного отчета в 1С. Я вообще то не ожидал, что моя ссылка вызовет такую бурю, если одбросить весь тот флуд которым славиться миста, т.е. три главных вывода в тему топика: 1. ИТОГИ ПО это есть аналог WITH ROLLUP для запросов 1С. 2. ИТОГИ ПО работают не всегда с той производительность которую дает WITH ROLLUP. 3. Многоплатформенность 1С применительно к серверам БД приводит к не применимости использования WITH ROLLUP т.к. данная конструкция является частным расширением синтаксиса языка T-SQL. Паля и не надо пихать безграмотные ссылки на никому не нужные мнения дилетанта. Ну уж если лично вам не данно читать между строк, не стоит мнение других выставлять за мнениями дилетантов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2010, 11:29 |
|
||
|
8.1 В языке запросов нет аналога WITH ROLLUP?
|
|||
|---|---|---|---|
|
#18+
vitkhv Там есть и запрос в 1С и трасса в профайлере. Или для вас в том топике слишком много букф? мм. может я что-то путаю . не вижу в ссылке вообще ничего ПО ТЕМЕ "быстродействие ИТОГов 1с". Ну то есть вообще ничего кроме "по моему мнению наблюдаются тормоза". что предлагаете делать с такими заявлениями? Копейка? 90 % от общего времени выполнения запроса! Насколько я помню у меня данный запрос выполнялся несколько минут, а это запрос из стандартного отчета в 1С. Ещё раз. для того чтобы это было не только в вашей голове - необходимо раскрыть тему. как минимум привести как можно более простой, воспроизводимый запрос, вычисление итогов которого критично, c объяснениями и замерами. Приводить ссылку на такой текст имеет смысл. Зачем приводить ссылку на непонятные утверждения неизвестно кого - "я что-то помню" и "мне вроде казалось"? Ерунда какая. 1. ИТОГИ ПО это есть аналог WITH ROLLUP для запросов 1С. 2. ИТОГИ ПО работают не всегда с той производительность которую дает WITH ROLLUP. 3. Многоплатформенность 1С применительно к серверам БД приводит к не применимости использования WITH ROLLUP т.к. данная конструкция является частным расширением синтаксиса языка T-SQL. Ну да. согласен по всем трём. мораль? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2010, 12:00 |
|
||
|
8.1 В языке запросов нет аналога WITH ROLLUP?
|
|||
|---|---|---|---|
|
#18+
Паля Ну да. согласен по всем трём. мораль? 8.1 В языке запросов нет аналога WITH ROLLUP? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2010, 12:26 |
|
||
|
8.1 В языке запросов нет аналога WITH ROLLUP?
|
|||
|---|---|---|---|
|
#18+
Паля мм. может я что-то путаю . не вижу в ссылке вообще ничего ПО ТЕМЕ "быстродействие ИТОГов 1с". Ну то есть вообще ничего кроме "по моему мнению наблюдаются тормоза". что предлагаете делать с такими заявлениями? Вы правы, тема топика там "v8: По мотивам-обсуждение статьи о сравнении 1С и Navision." А по поводу "по моему наблюдению наблюдаются тормоза", чьи наблюдения для вас имеют вес, что бы вы такого тестера не назвали дилетантом? Самомнение хлещет через край, господин Паля. Паля Ещё раз. для того чтобы это было не только в вашей голове - необходимо раскрыть тему. как минимум привести как можно более простой, воспроизводимый запрос, вычисление итогов которого критично, c объяснениями и замерами. Приводить ссылку на такой текст имеет смысл. Зачем приводить ссылку на непонятные утверждения неизвестно кого - "я что-то помню" и "мне вроде казалось"? Ерунда какая. Не передергивайте, там нет "я что то помню" и "мне вроде показалось", там есть утверждение что есть потери производительности в ИТОГИ ПО с которым вы в итоге согласились, приведен запрос 1С и трасса в профайлере и указанно, что сам запрос выполняется моментально, а затем идет его обработка на сервере 1С, которая занимает огромное количество времени по сравнению со временем выполнения самого запроса. Т.к. трасса в профайлере показывает, что в 1С запросе не используется Group By, следует вывод функцию 1С выполняет сама, причем выполняет отвратительно медленно. Какие еще вам замеры нужны, какого рода нагрузочное тестирование? Про "простой" и "воспроизводимый запрос", там приведен конкретный запрос который тормозил с указанием в топике про то, что в запросе используются множественные объединения, на простых запросах, как раз таки проблем и не наблюдалось. Да кстати, от вас кроме обвинений в некомпетенции я никаких опровержений хотя бы на уровне приведенных примеров топика указанного в ссылке я не увидел, я уже молчу про нагрузочное тестирование в ВАШЕМ исполнении, также как я никогда до этого не видел ВАШИ подобные тесты на этом форуме, может конечно плохо смотрел, если ошибаюсь дайте ссылку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2010, 13:05 |
|
||
|
8.1 В языке запросов нет аналога WITH ROLLUP?
|
|||
|---|---|---|---|
|
#18+
Shuhard, Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2010, 19:21 |
|
||
|
8.1 В языке запросов нет аналога WITH ROLLUP?
|
|||
|---|---|---|---|
|
#18+
ээ. вы про чо вообще? Пальцем ткните где это всё о чём вы говорите. Нет честно. я может не в ту ссылку ткнулся. я вижу только вот по ссылке: авторВот вычитал такое в статье - "1С 80 поддерживает полноценные SQL запросы на чтение данных, с объединениями множества таблиц." Не согласен - 1С не подерживает функции суперагрегирования данных WITH CUBE и WITH ROLLUP. В 1С в большинстве SQL запросов не используется GROUP BY, как я понял из своих наблюдений 1С тянет на сервер предприятия выборку и там ее группирует в соответсвии с параметрами указанными в построителе отчетов. Трассировка в профайлере только подтвердила мои наблюдения. Так вот по некоторым SQL запросам в которых используется "с объединениями множества таблиц" наблюдаются жуткие тормоза. Поэтому если читать вот это-"Или же можно предположить наличие большой избыточности данных, т.е. наличие большого количества таблиц, служащих только для облегчения обработки данных, данные в которые переносятся триггерами из исходных таблиц." в 1C чтоб не тормозила тоже необходима определенная избыточность данных и по моему мнению необходимая избыточность превосходит все разумные границы. Где все те чудесные исследования о которых вы говорите. чот я туплю куда смотреть то надо? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2010, 19:50 |
|
||
|
8.1 В языке запросов нет аналога WITH ROLLUP?
|
|||
|---|---|---|---|
|
#18+
cyxShuhard, Спасибо! Пожалуйста Стоит обратить внимание, что в 8.2 для ускорения расчета Итогов появились разные "вкусности" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2010, 20:02 |
|
||
|
8.1 В языке запросов нет аналога WITH ROLLUP?
|
|||
|---|---|---|---|
|
#18+
Паля Где все те чудесные исследования о которых вы говорите. чот я туплю куда смотреть то надо? Паля я где то писал об иследованиях да кто му же и чудесных? Право не нужно сарказма. Ну а если вы не можете найти сам запрос и его трассу - в одном из моих постов есть такой значечек ">>" нажмите на него, и текст откроется. Ну и цель моей ссылки вызвавшей в вашей душе такой дискомфорт было все во лишь донести до автора топика - такую простую мысль: 1. ИТОГИ ПО это есть аналог WITH ROLLUP для запросов 1С. (на это сух указал до меня Shuhard) 2. ИТОГИ ПО работают не всегда с той производительность которую дает WITH ROLLUP. (это я описал в своей ссылке) 3. Многоплатформенность 1С применительно к серверам БД приводит к не применимости использования WITH ROLLUP т.к. данная конструкция является частным расширением синтаксиса языка T-SQL. (ну это естественный вывод если учитывать, что 1С может работать с несколькими серверами БД). Что вас так завело, что вы позволили себе обвинить меня в дилетанстве мне не понятно, будте добры объясните. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2010, 23:39 |
|
||
|
8.1 В языке запросов нет аналога WITH ROLLUP?
|
|||
|---|---|---|---|
|
#18+
vitkhv[Многоплатформенность 1С применительно к серверам БД приводит к не применимости использования WITH ROLLUP т.к. данная конструкция является частным расширением синтаксиса языка T-SQL. (ну это естественный вывод если учитывать, что 1С может работать с несколькими серверами БД).+1. Обсуждали подобные вопросы на курсах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2010, 23:53 |
|
||
|
8.1 В языке запросов нет аналога WITH ROLLUP?
|
|||
|---|---|---|---|
|
#18+
vitkhv, Ну а если вы не можете найти сам запрос и его трассу - в одном из моих постов есть такой значечек ">>" нажмите на него, и текст откроется. ааа!! типа должно разворачиваться там? звиняйте коллега!! у меня не разворачивается ни в опере ни в IE.. Сори. что вижу то вижу. Если там что-то есть разумное - тогда я виноват! прошу прощения! (уже неважно что, главно что есть!! ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2010, 00:33 |
|
||
|
8.1 В языке запросов нет аналога WITH ROLLUP?
|
|||
|---|---|---|---|
|
#18+
Паляvitkhv, Ну а если вы не можете найти сам запрос и его трассу - в одном из моих постов есть такой значечек ">>" нажмите на него, и текст откроется. ааа!! типа должно разворачиваться там? звиняйте коллега!! у меня не разворачивается ни в опере ни в IE.. Сори. что вижу то вижу. Если там что-то есть разумное - тогда я виноват! прошу прощения! (уже неважно что, главно что есть!! ) эта фича Мисты, броузер не причём ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2010, 10:33 |
|
||
|
8.1 В языке запросов нет аналога WITH ROLLUP?
|
|||
|---|---|---|---|
|
#18+
Shuhard эта фича Мисты, броузер не причём В смысле в чём фича? ну теперь то я догадался что там что-то должно быть. но у меня не раскрывается по нажатию.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2010, 12:27 |
|
||
|
8.1 В языке запросов нет аналога WITH ROLLUP?
|
|||
|---|---|---|---|
|
#18+
Паля В смысле в чём фича? ну теперь то я догадался что там что-то должно быть. но у меня не раскрывается по нажатию.. Извиняюсь, совсем забыл, что там это счастье можно посмотреть только после регистрации. И если в опере, после регистрации надо нажать Ctrl+R. За значком там скрывается вот это: авторВот запрос - из Анализ доступности товаров на складах: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. Вот трасса в профайлере- Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. Группировки - Склад,Номенклатура Запрос на SQL сервере выполняется моментально 98% времени тратится на вывод отчета. Все эти 98% загружен сервер предприятия. В трассе запроса нет Group BY. В случае если бы группировал SQL сервер это было бы моментально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2010, 14:18 |
|
||
|
8.1 В языке запросов нет аналога WITH ROLLUP?
|
|||
|---|---|---|---|
|
#18+
Паля но у меня не раскрывается по нажатию.. мне пох, тебе обидно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2010, 15:27 |
|
||
|
8.1 В языке запросов нет аналога WITH ROLLUP?
|
|||
|---|---|---|---|
|
#18+
Лана. с техзатыком разобрались. Продолжим сраца по существу. Группировки - Склад,Номенклатура Запрос на SQL сервере выполняется моментально 98% времени тратится на вывод отчета. Все эти 98% загружен сервер предприятия. В трассе запроса нет Group BY. В случае если бы группировал SQL сервер это было бы моментально. Нет ну причём тут ИТОГИ? То что вы написали ВООБЩЕ ничего не означает. о чём эти наблюдения? Сделайте два одинаковых запроса с группировкой. Добавьте к одному из них расчёт итогов. Запустите один и второй - посмотрели разницу увидели что разница большая - объяснили почему. затем на разных количествах строк ещё надо убедится что зависимость от итогов существенная и несравнима с тормозом от обхода таблицы языком 1с и обращения к полям. Мне лично очевидно, что нет проблем считать итоги на клиенте и во много раз быстрее чем обход таблицы скриптом 1с. если это не так, то просто надо это показать и удивится багу платформы. Ваш пример не демонстрирует ничего. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2010, 17:33 |
|
||
|
8.1 В языке запросов нет аналога WITH ROLLUP?
|
|||
|---|---|---|---|
|
#18+
ПаляНет проблем считать итоги на клиенте и во много раз быстрее чем обход таблицы скриптом 1с в абстрактной учетной системе возможно проблем и нет к 8.1 утверждение отношения не имеет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2010, 17:49 |
|
||
|
8.1 В языке запросов нет аналога WITH ROLLUP?
|
|||
|---|---|---|---|
|
#18+
Паля Нет ну причём тут ИТОГИ? То что вы написали ВООБЩЕ ничего не означает. о чём эти наблюдения? Сделайте два одинаковых запроса с группировкой. Добавьте к одному из них расчёт итогов. Запустите один и второй - посмотрели разницу увидели что разница большая - объяснили почему. затем на разных количествах строк ещё надо убедится что зависимость от итогов существенная и несравнима с тормозом от обхода таблицы языком 1с и обращения к полям. Умея пользоваться мониторингом не только 1С, достаточно и одного запроса, чтобы понять, что затык расчета итогов - на стороне 1С. :) А уже в чем конкретно этот затык - совершенно фиолетово, ибо повлиять на его, не выходя за рамки платформы еще пока нельзя... ПаляМне лично очевидно, что нет проблем считать итоги на клиенте и во много раз быстрее чем обход таблицы скриптом 1с. Это естественно, но расчет итогов на сервере БД также во много раз быстрее, чем на клиенте. Даже если клиентом тут выступает сервер приложения 1С. И это не бага платформы, а вполне нормальное поведение - с учетом единого сервера приложения под все поддерживаемые БД. Вот если бы 1С сделала под каждую БД отдельный оптимизированный сервер приложения - тогда это было бы бага. А пока это фича, ибо "так и было задумано"... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2010, 18:26 |
|
||
|
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?all=1&fid=28&tid=1521969]: |
0ms |
get settings: |
7ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
65ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 236ms |
| total: | 368ms |

| 0 / 0 |
