Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Запрос внутри ф-ции работает медленнее !?!?!?
|
|||
|---|---|---|---|
|
#18+
Есть большая выборка. Отрабатывается за ~70мсек. Сделал из него ф-цию Код: plaintext 1. 2. 3. 4. 5. После этого запрос вида Код: plaintext 1. Это так и задумывалось, что ф-ция работает НАСТОЛЬКО медленее, или я что-то не правильно делаю? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2004, 14:56 |
|
||
|
Запрос внутри ф-ции работает медленнее !?!?!?
|
|||
|---|---|---|---|
|
#18+
А можно всю таблицу и функцию. У меня почему то наоборот. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2004, 19:48 |
|
||
|
Запрос внутри ф-ции работает медленнее !?!?!?
|
|||
|---|---|---|---|
|
#18+
Перепроверил, та же ситуация , что у тебя. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2004, 19:57 |
|
||
|
Запрос внутри ф-ции работает медленнее !?!?!?
|
|||
|---|---|---|---|
|
#18+
Сильного замедления не наблюдается. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2004, 09:53 |
|
||
|
Запрос внутри ф-ции работает медленнее !?!?!?
|
|||
|---|---|---|---|
|
#18+
У меня была похожая проблема. Пришлось вместо некоторых функций на plsql, которые выбирали динамические даты периодов, сделать функции формирования глобальных констант дат периодов в массив GD на tcl/tk, а потом везде в запросах использовать именно константы. А константы менять с изголениями через триггеры на after update... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2004, 20:46 |
|
||
|
Запрос внутри ф-ции работает медленнее !?!?!?
|
|||
|---|---|---|---|
|
#18+
To Niemi А можно всю таблицу и функцию. Запрос весьма большой 43 строки основного и ещё 36 строк дополнителных фильтров. Соединяет около 15 таблиц и вью. План выполнения - 92 строки. В общем вещь весьма неприятная. Если всё же захочешь посмотреть - я выложу его сюда. To strizh Заменить ф-цию чем-то другим вряд ли получится. В конце-концов я могу заставить программеров вызывать мой запрос непосредственно из приложения, подставив параметры руками. Просто с ф-цией это выглядит красивше, да и работать по идее должно быстрее, хотя последнее к Постгресу наверно не относится(((. То All Не так давно был вот топик . Может ноги от туда растут? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2004, 12:32 |
|
||
|
Запрос внутри ф-ции работает медленнее !?!?!?
|
|||
|---|---|---|---|
|
#18+
- А можно всю таблицу и функцию. - ... Если всё же захочешь посмотреть - я выложу его сюда. - Выкладывайте. Можно в приложении, чтобы не засорять топик. mwolfТо All Не так давно был вот топик . Может ноги от туда растут?Не понятно. Откуда? Из недостаточно оптимизированного плана выполнения? Но почему это проявляется у вас только при вызове из функции? :-( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2004, 14:58 |
|
||
|
Запрос внутри ф-ции работает медленнее !?!?!?
|
|||
|---|---|---|---|
|
#18+
Вот. Прилагается. Это баннерная система. result_view вытягивает возможные варианты баннера и места под него. Потом, при получении запроса от клиента, накладывается несколько фильтров. Это проверка места, где расположен клиент, его браузер, скорость соединения к нему, время показа. Всякие дополнительные фильтры я исключил, ибо они большой роли не играют. Это проверено. Есть ещё несколько вопросов. Постгрес как я понял не компилит ф-ции и триггеры в момент их создания. И соответственно, понятие валидности ф-ции (как в Оракле) для него нет. Имеет ли смысл вообще создавать хранимые процедуры? Так как главная причина их создания - увеличение скорости выполнения за счёт компиляции и предпарсинга - отсутствует, то нафик они тогда нужны вообще? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2004, 20:03 |
|
||
|
Запрос внутри ф-ции работает медленнее !?!?!?
|
|||
|---|---|---|---|
|
#18+
To mwolf: Осталась именно вызываемая функция, только писал language 'pltcl' вместо language 'plpgsql', просто для tcl поддерживаются общие ДЛЯ СОЕДИНЕНИЯ глобальные константы. Менял константы из триггера опять же на tcl, который срабатывал на изменение базовой таблицы, в которой были исходные данные для дат периодов. В любом случае, работает в 3-6 раз быстрее, чем в функции на plpgsql выбирать даты из базовой таблицы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2004, 21:03 |
|
||
|
Запрос внутри ф-ции работает медленнее !?!?!?
|
|||
|---|---|---|---|
|
#18+
mwolfВот. Прилагается.Приведите пожалуйста explain analyze запроса (не функции). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2004, 11:01 |
|
||
|
Запрос внутри ф-ции работает медленнее !?!?!?
|
|||
|---|---|---|---|
|
#18+
LeXa NalBat mwolfВот. Прилагается.Приведите пожалуйста explain analyze запроса (не функции). Пожалуста. Прокоментирую немного. Вот вью из запроса: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2004, 13:03 |
|
||
|
Запрос внутри ф-ции работает медленнее !?!?!?
|
|||
|---|---|---|---|
|
#18+
postgres дествительно не компелит функции ,но 'plpgsql' дает прирост производительности только когда одна и таже функция выполняется несколько раз в пределах конекта,за счет того что запоминает для каждого запроса план выполнения,(за исключением случая с execute, для execute план строится каждый раз заново) это все в доках кстати написанно. думаю стоит поглядеть в сторону CREATE FUNCTION, в частности в сторону модификаторов IMMUTABLE | STABLE | VOLATILE... и т.д., повыкручивать постгрес на предмет записи в лог планов выполнения запросов. и посмотреть где разница между функцией и запросом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2004, 14:00 |
|
||
|
Запрос внутри ф-ции работает медленнее !?!?!?
|
|||
|---|---|---|---|
|
#18+
To LeXa NalBat: Но почему это проявляется у вас только при вызове из функции? Да не знаю как будут себя вести конструкции типа $1::int8. Потому как при вот такой записи: что-то=$1 - ругался парсер, при такой что-то = $1 - через пробелы, было всё ок. Потому и предложил такой вариант. То wbear: 'plpgsql' дает прирост производительности только когда одна и таже функция выполняется несколько раз в пределах конекта Эта ф-ция будет\должна выполняться раз 500 в секунду. С разными параметрами, естесно. Продолжу рассуждения и спрошу уважаемого All, что он думает про команды PREPARE-EXECUTE. Мне сугубо параллельно, чем мои программеры будут получать данные - с помощью EXECUTE или вызова ХП. Мне нужна скорость самих запросов и скорость обмена данными между сервером БД и сервером приложения. Что вы можете сказать об этих командах? Мож взять их и мозг не мучать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2004, 15:06 |
|
||
|
Запрос внутри ф-ции работает медленнее !?!?!?
|
|||
|---|---|---|---|
|
#18+
mwolfЕсть большая выборка. Отрабатывается за ~70мсек. mwolf(actual time=0.71..0.71 rows=0 loops=1)Так все таки большая выборка или пустая выборка? mwolfВо время тестирования таблицы obligatory и not_obligatory пусты.Почему? mwolfДа не знаю как будут себя вести конструкции типа $1::int8. Потому как при вот такой записи: что-то=$1 - ругался парсер, при такой что-то = $1 - через пробелы, было всё ок. Потому и предложил такой вариант.То есть внутри функции у вас выполняется не тот же самый запрос, который вы вызываете без функции? Или фича в удвоенных одинарных кавычках в Create function? Объясните пожалуйста. Из-за чего вы объявляете функцию VOLATILE? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2004, 15:36 |
|
||
|
Запрос внутри ф-ции работает медленнее !?!?!?
|
|||
|---|---|---|---|
|
#18+
LeXa NalBat mwolfЕсть большая выборка. Отрабатывается за ~70мсек. mwolf(actual time=0.71..0.71 rows=0 loops=1)Так все таки большая выборка или пустая выборка? Гм. Болшой запрос, в смысле длинный запрос - так пожалуй правильнее надо сказать. Насчёт того сколько возвращается строк - не скажу ничего, так как всё зависит от переданых параметров. На тестах число строк варьируется от 0 до 1000. В данном конкретном случае - нет ничего. Тесты проводились для одинаковых значений и для запроса, и для ф-ции. LeXa NalBat mwolfВо время тестирования таблицы obligatory и not_obligatory пусты.Почему? Тестовые данные такие. Тесты будут проводиться дальше - тогда набьются значения и в остальные таблицы. Пока же они пусты. Не совсем, только, понятно как это может повлиять на скорость работы в ф-ции. LeXa NalBat mwolfДа не знаю как будут себя вести конструкции типа $1::int8. Потому как при вот такой записи: что-то=$1 - ругался парсер, при такой что-то = $1 - через пробелы, было всё ок. Потому и предложил такой вариант.То есть внутри функции у вас выполняется не тот же самый запрос, который вы вызываете без функции? Или фича в удвоенных одинарных кавычках в Create function? Объясните пожалуйста. Тексты кода запроса и кода создания ф-ции я привёл. Имено так это создано в базе. Я просто подумал, что возможна проблема наподобии того, как я описал. То есть, если парсер не хотел разбирать =$1 , а требовал пробела между ними, то кто знает может он не подхватыват $1::int8. Хотя не похоже, потому как запрос без такого приведения типов работает значительно дольше ф-ции с приведение типа LeXa NalBatИз-за чего вы объявляете функцию VOLATILE? Да хз. Я не сильно разбираюсь, что это такое. По дефаулту в пгАдмине стоит это - так и осталось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2004, 16:02 |
|
||
|
Запрос внутри ф-ции работает медленнее !?!?!?
|
|||
|---|---|---|---|
|
#18+
mwolf LeXa NalBatИз-за чего вы объявляете функцию VOLATILE?Да хз. Я не сильно разбираюсь, что это такое. По дефаулту в пгАдмине стоит это - так и осталось.В доке написано: "VOLATILE indicates that the function value can change even within a single table scan, so no optimizations can be made". Попробуйте без VOLATILE. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2004, 16:49 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=32704491&tid=2007662]: |
0ms |
get settings: |
6ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
147ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
2ms |
| others: | 236ms |
| total: | 493ms |

| 0 / 0 |
