|
|
|
SELECT работает слишком медленно с ORDER BY
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток форумчане . Имеется запрос который генерирует ORM OpenERP: Код: plsql 1. 2. 3. 4. Индексы : Код: plsql 1. 2. 3. 4. Запрос с ORDER BY "tbl"."display_name" работает слишком медленно План : Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. Без ORDER BY "tbl"."display_name" План : Код: plsql 1. 2. 3. 4. 5. К сожалению запрос поменять нельзя никак (нету доступа к ORM-у) . Есть идеи как ускорить с ORDER BY? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2016, 10:39 |
|
||
|
SELECT работает слишком медленно с ORDER BY
|
|||
|---|---|---|---|
|
#18+
NewBie77, сделайте для теста set enable_sort = off; и покажите какой будет план запроса с order by. как-то подозрительно долго сортирует 100к записей, в этом поле какие-то длинные значения? или может процессор перегружен, что более вероятно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2016, 10:52 |
|
||
|
SELECT работает слишком медленно с ORDER BY
|
|||
|---|---|---|---|
|
#18+
Alexius, Код: plsql 1. 2. 3. 4. 5. В display_name записаны имена и фамилии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2016, 10:56 |
|
||
|
SELECT работает слишком медленно с ORDER BY
|
|||
|---|---|---|---|
|
#18+
Все тесты делались ночью когда система не была загружена, проблем с перегрузкой процессора не было. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2016, 10:58 |
|
||
|
SELECT работает слишком медленно с ORDER BY
|
|||
|---|---|---|---|
|
#18+
AlexiusNewBie77, как-то подозрительно долго сортирует 100к записейдопустим то "ин мемори", в котором оно, якобы, "сорт" -- оказалось в свапе. это бы всё объяснило. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2016, 11:24 |
|
||
|
SELECT работает слишком медленно с ORDER BY
|
|||
|---|---|---|---|
|
#18+
NewBie77, какой размер индекса ix_displayname (\di+ ix_displayname) и размер таблицы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2016, 11:25 |
|
||
|
SELECT работает слишком медленно с ORDER BY
|
|||
|---|---|---|---|
|
#18+
Alexius, Индекс сделал вчера когда заметил что запрос выполняется медленно. Код: plsql 1. 2. 3. 4. 5. 6. Таблица : Код: plsql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2016, 11:31 |
|
||
|
SELECT работает слишком медленно с ORDER BY
|
|||
|---|---|---|---|
|
#18+
Alexius, там ширина 47. я вот смоделировал Код: sql 1. 2. 3. 4. 5. 6. кажется даже диск не объясняет то время для сорта [width=143], что случилось у автора[width=47]. главный вопрос теперь -- насколько оно воспроизводимо. ТС, у вас там какой-нито хитровывернутый коллейт не используется ? или, предполагаю в порядке бреда, вы , б.м., как--нито переопределили отношение порядка для варчара ? через жутко медленную ф--ю? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2016, 11:36 |
|
||
|
SELECT работает слишком медленно с ORDER BY
|
|||
|---|---|---|---|
|
#18+
qwwq, со свопом вполне вариант, если в этот момент диски еще были перегружены. NewBie77, если последовательно несколько раз запустить исходный запрос, время выполнения меняется как-то? какая ОС используется ? если linux - можно вывод команды top (шапку + процесс, который запрос выполняет, если видно) во время выполнения запроса? есть ли какая-то виртуализация? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2016, 12:34 |
|
||
|
SELECT работает слишком медленно с ORDER BY
|
|||
|---|---|---|---|
|
#18+
qwwq, Там поле типа Код: plsql 1. все записи в уникоде Alexius , Код: plsql 1. Запрос выполняется в одно и то же время если несколько раз запустить. Потестили на 2 серверах запрос и на обеих выполняется медленно. top во время выполнения запроса: Код: plsql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2016, 12:44 |
|
||
|
SELECT работает слишком медленно с ORDER BY
|
|||
|---|---|---|---|
|
#18+
NewBie77, интересно еще шапку top посмотреть во время выполнения запроса, все что перед списком процессов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2016, 12:48 |
|
||
|
SELECT работает слишком медленно с ORDER BY
|
|||
|---|---|---|---|
|
#18+
Alexius, Извиняюсь если не правильно понял Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2016, 12:52 |
|
||
|
SELECT работает слишком медленно с ORDER BY
|
|||
|---|---|---|---|
|
#18+
NewBie77, нет, я имел ввиду все что выше. где load average, %sy, %wa, использование свопа и прочее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2016, 12:57 |
|
||
|
SELECT работает слишком медленно с ORDER BY
|
|||
|---|---|---|---|
|
#18+
Alexius, Код: plsql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2016, 12:58 |
|
||
|
SELECT работает слишком медленно с ORDER BY
|
|||
|---|---|---|---|
|
#18+
NewBie77, спасибо, получается 2ГБ памяти и своп используется. какой размер shared_buffers? я вижу java, аппетиты ей как-то зарезаются? посмотрите в top кто еще память ест (можно нажать shift+M, чтобы отсортировать). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2016, 13:08 |
|
||
|
SELECT работает слишком медленно с ORDER BY
|
|||
|---|---|---|---|
|
#18+
NewBie77, я правильно понял, шо у вас там жаба бесконтрольно память похавала всю, с концаме ? гоните ее с серверов БД сцаными тряпкаме. поправьте меня, люди добрые, если вру. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2016, 13:09 |
|
||
|
SELECT работает слишком медленно с ORDER BY
|
|||
|---|---|---|---|
|
#18+
Java стоит на тестовом сервере , на основном нету Топ основного сервера : Код: plsql 1. 2. 3. 4. 5. Память жрет сам OpenERP. Код: plsql 1. shared buffer стоит на тестовом : 500MB на основном : shared_buffers = 1600MB ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2016, 13:22 |
|
||
|
SELECT работает слишком медленно с ORDER BY
|
|||
|---|---|---|---|
|
#18+
NewBie77, Приведите вывод: системных команд `lscpu` и `free -m` запроса: SELECT name,setting,unit FROM pg_settings WHERE source NOT IN ('default','override'); запроса: SELECT version(); На продукционном сервере этот эффект также воспроизводим? Что ещё работает на продукции, кроме ПЖ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2016, 13:25 |
|
||
|
SELECT работает слишком медленно с ORDER BY
|
|||
|---|---|---|---|
|
#18+
vyegorov, Тестовый сервер : Код: plsql 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. Основной : Код: plsql 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. На основном сервере только база и OpenERP и на обоих сервераз запрос глючит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2016, 13:42 |
|
||
|
SELECT работает слишком медленно с ORDER BY
|
|||
|---|---|---|---|
|
#18+
Нету никаких идей ребят как решить данную проблему ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2016, 15:20 |
|
||
|
SELECT работает слишком медленно с ORDER BY
|
|||
|---|---|---|---|
|
#18+
NewBie77, уменьшить work_mem, ограничить память у приложений как-то, добавить памяти. для теста можно попробовать на тестовом сервере остановить приложения, чтобы память освободилась и своп не использовался и запустить запрос еще раз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2016, 15:46 |
|
||
|
SELECT работает слишком медленно с ORDER BY
|
|||
|---|---|---|---|
|
#18+
NewBie77Нету никаких идей ребят как решить данную проблему ? Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. а дальше я подумаю в чем беда. -- Maxim Boguk www.postgresql-consulting.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2016, 15:47 |
|
||
|
SELECT работает слишком медленно с ORDER BY
|
|||
|---|---|---|---|
|
#18+
NewBie77, идея пока в том, что пж думает, что работает с нормальной памятью, и делает квик сорт, который унутре наверняка имеет обильную рендомную адресацию. а если бы он знал, что памяти с гулькин хрен --- он бы пользовался Sort Method: external merge Disk -- как у всех порядочных людей, с нехваткой памяти. кактотак. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2016, 15:53 |
|
||
|
SELECT работает слишком медленно с ORDER BY
|
|||
|---|---|---|---|
|
#18+
NewBie77, work_mem слишком большой. у меня 512 памяти в продукциях, но work_mem 32MB максимум. Потенциально, ПЖ может съесть shared_buffers + work_mem*max_connections, если придут все возможные сессии. Вы сами загоняете себя в swap. Понизьте до умолчательных 4МБ, если нужно больше для каких-то запросов, то меняйте индивидуально в скрипте. что выводит: sysctl -a|egrep '^vm.(dirty|swap|over)' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2016, 15:58 |
|
||
|
SELECT работает слишком медленно с ORDER BY
|
|||
|---|---|---|---|
|
#18+
vyegorovNewBie77, work_mem слишком большой. у меня 512 памяти в продукциях, но work_mem 32MB максимум. Потенциально, ПЖ может съесть shared_buffers + work_mem*max_connections, если придут все возможные сессии. Вы сами загоняете себя в swap. Понизьте до умолчательных 4МБ, если нужно больше для каких-то запросов, то меняйте индивидуально в скрипте. что выводит: sysctl -a|egrep '^vm.(dirty|swap|over)' Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. work_mem поставил на 4 mb Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2016, 16:09 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=39238837&tid=1997232]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
146ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
1ms |
| others: | 252ms |
| total: | 504ms |

| 0 / 0 |
