|
Непостоянное время выполнения запроса - всегда разное
|
|||
---|---|---|---|
#18+
Есть несложный запрос с группировкой данных Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Я хочу получить стабильное время работы данный выборки, но не получается. Каждый раз когда я меняю диапазон дат (например хочу другой месяц) запрос выполняется очень медленно - например это время сравнимо с 3-4 минутами. Если не менять даты и запускать запрос несколько раз с одними и теми же датами, то время выполнения измеряется секундами. Я новичёк в PG - мне не понятно почему так происходит. План выполнения запроса прилагаю ... |
|||
:
Нравится:
Не нравится:
|
|||
03.08.2021, 13:40 |
|
Непостоянное время выполнения запроса - всегда разное
|
|||
---|---|---|---|
#18+
balykovdron Есть несложный запрос с группировкой данных Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Я хочу получить стабильное время работы данный выборки, но не получается. Каждый раз когда я меняю диапазон дат (например хочу другой месяц) запрос выполняется очень медленно - например это время сравнимо с 3-4 минутами. Если не менять даты и запускать запрос несколько раз с одними и теми же датами, то время выполнения измеряется секундами. Я новичёк в PG - мне не понятно почему так происходит. План выполнения запроса прилагаю Код: sql 1.
и не в виде скриншотов, а консольный вывод пжлста ... |
|||
:
Нравится:
Не нравится:
|
|||
03.08.2021, 13:43 |
|
Непостоянное время выполнения запроса - всегда разное
|
|||
---|---|---|---|
#18+
Используемый в плане индекс ix_requests_reccreated создан по полю reccreated ... |
|||
:
Нравится:
Не нравится:
|
|||
03.08.2021, 13:45 |
|
Непостоянное время выполнения запроса - всегда разное
|
|||
---|---|---|---|
#18+
mefman и не в виде скриншотов, а консольный вывод пжлста Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.08.2021, 13:51 |
|
Непостоянное время выполнения запроса - всегда разное
|
|||
---|---|---|---|
#18+
Поменял даты на месяц пораньше - запустил опять, результат ждал десяток минут... (( Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.08.2021, 14:24 |
|
Непостоянное время выполнения запроса - всегда разное
|
|||
---|---|---|---|
#18+
balykovdron Planning time: 0.139 ms Execution time: 132579.696 ms Я вижу, что сильно отличается время плана и факта, но что дальше делать и куда копать - не предположу. Табличка высоконагруженная и работа с ней реальными пользователями не останавливается ни на секунду. Что можете предложить в данной ситуации? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.08.2021, 14:26 |
|
Непостоянное время выполнения запроса - всегда разное
|
|||
---|---|---|---|
#18+
balykovdron Табличка высоконагруженная автовакуум настраивали? и вообще настройки в БД меняли какие-либо? или все по-дефолту? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.08.2021, 15:03 |
|
Непостоянное время выполнения запроса - всегда разное
|
|||
---|---|---|---|
#18+
mefman balykovdron Табличка высоконагруженная автовакуум настраивали? и вообще настройки в БД меняли какие-либо? или все по-дефолту? ЛОЛ. и зачем вам group если вы закомментировали каунты? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.08.2021, 15:23 |
|
Непостоянное время выполнения запроса - всегда разное
|
|||
---|---|---|---|
#18+
Видимо у Вас очень "дорогое" чтение с диска Я так понимаю, это время после нескольких запусков, т.е. у Вас прогрелся кэш и читать с диска надо меньше Код: sql 1. 2. 3. 4.
А это первый запуск после смены периода, холодный кэш, приходиться читать больше Код: sql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.08.2021, 15:58 |
|
Непостоянное время выполнения запроса - всегда разное
|
|||
---|---|---|---|
#18+
mefman ЛОЛ. и зачем вам group если вы закомментировали каунты? Т.к. я разбираюсь с этим запросом - решил методо исключения его упрощать, поэтому закомментировано. Админ сервака, говорит, что автовакуум настроен. А вот на сколько он эффективен? Как можно глянуть? И скорее всего большинство настроек сервера настроены по-умолчанию. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.08.2021, 15:58 |
|
Непостоянное время выполнения запроса - всегда разное
|
|||
---|---|---|---|
#18+
Кстати, сколько у Вас ОЗУ и shared_buffers ? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.08.2021, 15:59 |
|
Непостоянное время выполнения запроса - всегда разное
|
|||
---|---|---|---|
#18+
Guzya Кстати, сколько у Вас ОЗУ и shared_buffers ? ОЗУ 24Гб, shared_buffers = 4GB ... |
|||
:
Нравится:
Не нравится:
|
|||
03.08.2021, 16:15 |
|
Непостоянное время выполнения запроса - всегда разное
|
|||
---|---|---|---|
#18+
mefman автовакуум настраивали? автовакуум настроен также по-умолчанию - админ его просто включил и всё, ничего не настраивая... А как можно проверить - он ввобще что-то делает? На сколько он эффективен? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.08.2021, 16:19 |
|
Непостоянное время выполнения запроса - всегда разное
|
|||
---|---|---|---|
#18+
Guzya Видимо у Вас очень "дорогое" чтение с диска Похоже на то - а что теперь дальше с этим делать? Как "удешевлять"? :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.08.2021, 16:20 |
|
Непостоянное время выполнения запроса - всегда разное
|
|||
---|---|---|---|
#18+
balykovdron, Удешевлять, наверное, только заменой дисков. По поводу запроса, возможно Вам стоит посмотреть в сторону создания материализованного представления с рефрешем (например раз в день). ... |
|||
:
Нравится:
Не нравится:
|
|||
03.08.2021, 16:28 |
|
Непостоянное время выполнения запроса - всегда разное
|
|||
---|---|---|---|
#18+
balykovdron mefman автовакуум настраивали? автовакуум настроен также по-умолчанию - админ его просто включил и всё, ничего не настраивая... А как можно проверить - он ввобще что-то делает? На сколько он эффективен? сделать запрос в БД на соответствующие параметры. Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.08.2021, 16:40 |
|
Непостоянное время выполнения запроса - всегда разное
|
|||
---|---|---|---|
#18+
А вот вообще ахтунг - этот же запрос на другом сервере, этаже таблица, с такимже индексом показывает совершенно другой план запроса! Это как вообще?! Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Этот план больше похож на то, чего ждут от запроса, и вопрос, а почему на другом сервере он не такой? И как исправить ситуацию там? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.08.2021, 18:23 |
|
Непостоянное время выполнения запроса - всегда разное
|
|||
---|---|---|---|
#18+
balykovdron этаже таблица, с такимже индексом balykovdron Buffers: shared hit=192889 против balykovdron Buffers: shared hit=2268904 read=140449 Всего-то на порядок больше данных, почему бы и работать не на порядок дольше? Фигня какая, действительно. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.08.2021, 18:30 |
|
Непостоянное время выполнения запроса - всегда разное
|
|||
---|---|---|---|
#18+
mefman show xxx [/src] namesettingunitautovacuumonNULLautovacuum_analyze_scale_factor0.1NULLautovacuum_analyze_threshold50NULLautovacuum_freeze_max_age200000000NULLautovacuum_max_workers3NULLautovacuum_multixact_freeze_max_age400000000NULLautovacuum_naptime60sautovacuum_vacuum_cost_delay20msautovacuum_vacuum_cost_limit-1NULLautovacuum_vacuum_scale_factor0.2NULLautovacuum_vacuum_threshold50NULLautovacuum_work_mem-1kBlog_autovacuum_min_duration-1ms ... |
|||
:
Нравится:
Не нравится:
|
|||
03.08.2021, 18:36 |
|
Непостоянное время выполнения запроса - всегда разное
|
|||
---|---|---|---|
#18+
balykovdron, Довольно высокое отношение кол-ва прочитанных страниц к извлеченным строкам на проблемном (4.5 к 1) Попробуйте отключить параллелизацию (set max_parallel_workers to 0, set max_parallel_workers_per_gather to 0) и еще раз выполнить запрос. Если отношение останется таким же высоким то возможная проблема в блоатинге индекса. Так же проверьте долгие транзакции на основном сервере (и всех репликах особенно если включен hot_standby_feedback). ... |
|||
:
Нравится:
Не нравится:
|
|||
03.08.2021, 21:30 |
|
Непостоянное время выполнения запроса - всегда разное
|
|||
---|---|---|---|
#18+
gav21 balykovdron, Довольно высокое отношение кол-ва прочитанных страниц к извлеченным строкам на проблемном (4.5 к 1) Попробуйте отключить параллелизацию (set max_parallel_workers to 0, set max_parallel_workers_per_gather to 0) и еще раз выполнить запрос. Если отношение останется таким же высоким то возможная проблема в блоатинге индекса. Так же проверьте долгие транзакции на основном сервере (и всех репликах особенно если включен hot_standby_feedback). max_parallel_workers отключать не рекомендую, вот а max_parallel_workers_per_gather - да ну и автовакуум таки не "оттюнен", следовательно возможен блоат и тухлая статистика. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.08.2021, 21:48 |
|
Непостоянное время выполнения запроса - всегда разное
|
|||
---|---|---|---|
#18+
gav21 Если отношение останется таким же высоким то возможная проблема в блоатинге индекса. А как лечится блоатинг индекса? Если пересозданием, то я так делал - примеры запросов уже после пересоздания индекса ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2021, 08:46 |
|
Непостоянное время выполнения запроса - всегда разное
|
|||
---|---|---|---|
#18+
Отключил один параметр: set max_parallel_workers_per_gather to 0 Теперь результат запроса на плохом сервере изменился - пропал узел Gather и план запроса стал похожим на план со здорового сервака Но скорость по-прежнему плохая. Вот план запроса Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2021, 09:39 |
|
Непостоянное время выполнения запроса - всегда разное
|
|||
---|---|---|---|
#18+
balykovdron, включите track_io_timing в конфиге чтобы понимать сколько времени на работу с диском уходит. -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2021, 10:02 |
|
Непостоянное время выполнения запроса - всегда разное
|
|||
---|---|---|---|
#18+
думаю вам скорее всего нужно вместе со своим админом смотреть. очень сложно лечить по телефону... ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2021, 10:18 |
|
Непостоянное время выполнения запроса - всегда разное
|
|||
---|---|---|---|
#18+
тензор- таблица сильно разрежена, рекомендуется произвести очистку с помощью VACUUM [FULL] - возможно, чтение идет "с середины" индекса - вероятно, сервер перегружен (CPU/RAM/HDD), или возникли блокировки посмотрите тут может что найдете для себя. но лучше идти к админу и решать вопрос совместно с ним. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2021, 10:24 |
|
Непостоянное время выполнения запроса - всегда разное
|
|||
---|---|---|---|
#18+
balykovdron, Скорее всего проблема в перегруженной дисковой системе. Покажите на всякий случай описание индекса: ix_requests_reccreated Так же полезно было бы знать на каких ожиданиях проводит запрос в процессе выполнения: колонки pg_stat_activity.wait_event_type, pg_stat_activity.wait_event ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2021, 10:50 |
|
Непостоянное время выполнения запроса - всегда разное
|
|||
---|---|---|---|
#18+
mefman Спасибо большое за инструмент! mefman таблица сильно разрежена А вот как оценить этот факт? Я раньше с MS SQL работал - там из инструментов администрирования можно было сразу видеть % разряженнго пространства. Как это сделать в PG? Простым гугленьем - не найду. Нахожу только, что сделайте вакуум фул. И не находится, "а что даст вакуум фул для конкретной таблицы? Сколько там сейчас свободного места?" ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2021, 11:57 |
|
Непостоянное время выполнения запроса - всегда разное
|
|||
---|---|---|---|
#18+
gav21 Покажите на всякий случай описание индекса: ix_requests_reccreated Код: sql 1. 2. 3.
gav21 на каких ожиданиях проводит запрос в процессе выполнения: колонки pg_stat_activity.wait_event_type, pg_stat_activity.wait_event wait_event_typewait_eventbackend_startxact_startquery_startstate_changebackend_xminIODataFileRead2021-08-04 09:06:11.017858+002021-08-04 09:06:11.01537+002021-08-04 09:06:11.01537+002021-08-04 09:06:11.018347+00159454958LWLockbuffer_io2021-08-04 09:06:11.01808+002021-08-04 09:06:11.01537+002021-08-04 09:06:11.01537+002021-08-04 09:06:11.018547+00159454958IODataFileRead2021-08-04 09:06:11.018268+002021-08-04 09:06:11.01537+002021-08-04 09:06:11.01537+002021-08-04 09:06:11.018736+00159454958IODataFileRead2021-08-04 09:06:11.018561+002021-08-04 09:06:11.01537+002021-08-04 09:06:11.01537+002021-08-04 09:06:11.019042+00159454958IODataFileRead2021-08-04 09:01:43.032007+002021-08-04 09:06:11.01537+002021-08-04 09:06:11.01537+002021-08-04 09:06:11.015373+00159454958 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2021, 12:12 |
|
Непостоянное время выполнения запроса - всегда разное
|
|||
---|---|---|---|
#18+
balykovdron, Вакум скорее всего никак кардинально не изменит картины. Поищите потенциальных потребителей-конкурентов, которые возможно параллельно нагружают ввод-вывод так, что у вас пропускная способность падает до 1-2 Мб в сек (read=69856 Execution time: 412207.956 ms) (тут на всякий случай нужно подтверждение, что бОльшая часть времени действительно была потрачено на операции IO - включите параметр track_io_timing как рекомендовал Максим) ожидание LWLock/buffer_io - говорит о том, что процесс пытается прочитать страницу с диска, которая уже читается другим процессом. Вы случай не пытаетесь одновременно в параллель выполнять эти запросы от разных процессов? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2021, 12:40 |
|
Непостоянное время выполнения запроса - всегда разное
|
|||
---|---|---|---|
#18+
balykovdron mefman Спасибо большое за инструмент! mefman таблица сильно разрежена А вот как оценить этот факт? Я раньше с MS SQL работал - там из инструментов администрирования можно было сразу видеть % разряженнго пространства. Как это сделать в PG? Простым гугленьем - не найду. Нахожу только, что сделайте вакуум фул. И не находится, "а что даст вакуум фул для конкретной таблицы? Сколько там сейчас свободного места?" по поводу разрежённости таблицы - это лишь предположение тензора. по поводу вакуум(фулл) - лучше общаться с вашим ДБА. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2021, 12:41 |
|
Непостоянное время выполнения запроса - всегда разное
|
|||
---|---|---|---|
#18+
balykovdron gav21 Покажите на всякий случай описание индекса: ix_requests_reccreated Код: sql 1. 2. 3.
gav21 на каких ожиданиях проводит запрос в процессе выполнения: колонки pg_stat_activity.wait_event_type, pg_stat_activity.wait_event wait_event_typewait_eventbackend_startxact_startquery_startstate_changebackend_xminIODataFileRead2021-08-04 09:06:11.017858+002021-08-04 09:06:11.01537+002021-08-04 09:06:11.01537+002021-08-04 09:06:11.018347+00159454958LWLockbuffer_io2021-08-04 09:06:11.01808+002021-08-04 09:06:11.01537+002021-08-04 09:06:11.01537+002021-08-04 09:06:11.018547+00159454958IODataFileRead2021-08-04 09:06:11.018268+002021-08-04 09:06:11.01537+002021-08-04 09:06:11.01537+002021-08-04 09:06:11.018736+00159454958IODataFileRead2021-08-04 09:06:11.018561+002021-08-04 09:06:11.01537+002021-08-04 09:06:11.01537+002021-08-04 09:06:11.019042+00159454958IODataFileRead2021-08-04 09:01:43.032007+002021-08-04 09:06:11.01537+002021-08-04 09:06:11.01537+002021-08-04 09:06:11.015373+00159454958 А у вас на этом сервере есть графики утилизации дисковой систему, r/w IOPS, r/w latency? Если нет - начните с нормального мониторинга. У вас всё по скорости в диски упирается. Лечить или искать кто так диски жестоко нагружает и лечить или ставить дисковую систему быстрее. -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2021, 13:00 |
|
Непостоянное время выполнения запроса - всегда разное
|
|||
---|---|---|---|
#18+
Для поиска "bloat" Код: sql 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2021, 13:12 |
|
Непостоянное время выполнения запроса - всегда разное
|
|||
---|---|---|---|
#18+
Guzya, Оно такого насчитать может что не рады будете. Единственный рабочий метод анализа bloat это pgstattuple расширение. -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2021, 13:25 |
|
Непостоянное время выполнения запроса - всегда разное
|
|||
---|---|---|---|
#18+
Maxim Boguk Guzya, Оно такого насчитать может что не рады будете. Единственный рабочий метод анализа bloat это pgstattuple расширение. -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru Это если прям точно-точно надо, при этом надо поставить расширение и при подсчете проверяются все страницы таблицы(полный проход). А этот скрипт делает прикидочную оценку, после которого уже можно переходить к более точным и более "тяжелым" подсчетам. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2021, 14:34 |
|
Непостоянное время выполнения запроса - всегда разное
|
|||
---|---|---|---|
#18+
Maxim Boguk А у вас на этом сервере есть графики утилизации дисковой систему, r/w IOPS, r/w latency? Если нет - начните с нормального мониторинга. У вас всё по скорости в диски упирается. Лечить или искать кто так диски жестоко нагружает и лечить или ставить дисковую систему быстрее. Короче, ТСу прямая дорога к его ОПСам. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2021, 15:06 |
|
Непостоянное время выполнения запроса - всегда разное
|
|||
---|---|---|---|
#18+
Maxim Boguk А у вас на этом сервере есть графики утилизации дисковой систему, r/w IOPS, r/w latency? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2021, 15:18 |
|
Непостоянное время выполнения запроса - всегда разное
|
|||
---|---|---|---|
#18+
balykovdron Maxim Boguk А у вас на этом сервере есть графики утилизации дисковой систему, r/w IOPS, r/w latency? Блин не тот файл приложил (( это пять! "у вас jpg" :D ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2021, 15:38 |
|
Непостоянное время выполнения запроса - всегда разное
|
|||
---|---|---|---|
#18+
gav21 это пять! Вы бы лучше IOPсы откоментили )) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2021, 17:16 |
|
Непостоянное время выполнения запроса - всегда разное
|
|||
---|---|---|---|
#18+
balykovdron gav21 это пять! Вы бы лучше IOPсы откоментили )) цифры не впечатляют и малополезны. Полезней будет latency / service time дисков - может у вас с СХД проблемы и высокие задержки на дисках. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2021, 17:52 |
|
|
start [/forum/topic.php?all=1&fid=53&tid=1993913]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
370ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
75ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 507ms |
0 / 0 |