|
|
|
Postgres оптимизация вопроса?
|
|||
|---|---|---|---|
|
#18+
PostgreSQL 9.3.3 on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-4), 64-bit Код: 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. это вообще кошмарно. может имеет смысл сортировать уже на клиенте али может какие другие соображения будут? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2015, 07:00 |
|
||
|
Postgres оптимизация вопроса?
|
|||
|---|---|---|---|
|
#18+
DoomUnitPostgreSQL 9.3.3 on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-4), 64-bit Код: 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. это вообще кошмарно. может имеет смысл сортировать уже на клиенте али может какие другие соображения будут? кошмарно быт таким negsv vskfrjv, и не видеть 29лямов rows removed by filter в приведенном собою же плане. я так скажу -- "уж лучше на клиенте фильтровать " убив перед этим клиента 30 лямами записей, положив его наконец лицом вниз, и всыпав розог. кстати, какого хера вы текст картинкой вставляете ? чтобы вас труднее было внего носом ткнуть ? так я и так скажу что вы pfghtltkmysq gblfhfc убивать убивать убивать dfnys[ gblfhfcjd ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2015, 08:05 |
|
||
|
Postgres оптимизация вопроса?
|
|||
|---|---|---|---|
|
#18+
DoomUnit, оба запроса на горячую запускались? Т.е. данные уже подгрузились в буферы? Как-то подозрительно выглядит двухсекундная сортировка менее, чем 10 строк (две секунды смотрю просто по разнице 11 против 9). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2015, 08:37 |
|
||
|
Postgres оптимизация вопроса?
|
|||
|---|---|---|---|
|
#18+
ну сервачок изрядно грузится просто. вот и ищу способы оптимизации. а как прибить 30 млн строк то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2015, 08:44 |
|
||
|
Postgres оптимизация вопроса?
|
|||
|---|---|---|---|
|
#18+
rovan, т.е вас только сортировка смутила? ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2015, 09:00 |
|
||
|
Postgres оптимизация вопроса?
|
|||
|---|---|---|---|
|
#18+
так а как переписать запрос чтобы он быстрее работал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2015, 09:08 |
|
||
|
Postgres оптимизация вопроса?
|
|||
|---|---|---|---|
|
#18+
DoomUnit, Никак. Этот запрос просто прекрасен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2015, 09:49 |
|
||
|
Postgres оптимизация вопроса?
|
|||
|---|---|---|---|
|
#18+
ой млин дал жару с сарказмом(( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2015, 10:02 |
|
||
|
Postgres оптимизация вопроса?
|
|||
|---|---|---|---|
|
#18+
DoomUnit, а где структура таблицы и список индексов наличных на ней? --Maxim Boguk www.postgresql-consulting.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2015, 10:04 |
|
||
|
Postgres оптимизация вопроса?
|
|||
|---|---|---|---|
|
#18+
DoomUnitой млин дал жару с сарказмом((вот всё у вас так, -- со сраказмом -- "сказочный, сказочный далпайоп"(тм) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2015, 10:05 |
|
||
|
Postgres оптимизация вопроса?
|
|||
|---|---|---|---|
|
#18+
Создание индекса в большой таблице может занять длительное время. По умолчанию, PostgreSQL позволяет читать (выбирать) из таблицы, параллельно с созданием индекса, но блокирует запись (вставку, обновление и удаление) до конца построения индекса. В производственной среде это часто неприемлемо. Можно позволить запись параллельно с созданием индекса, но есть несколько предостережений, о которых надо быть в курсе - для получения дополнительной информации см. создание индексов без блокировки . После того, как индекс будет создан, система должна поддерживать ее синхронизированным с таблицей. Это добавляет дополнительные расходы на операции с данными. Поэтому индексы, которые редко или никогда не используются в запросах должны быть удалены. Получается динамически создавть индексы для данных последних дней не получится? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2015, 10:14 |
|
||
|
Postgres оптимизация вопроса?
|
|||
|---|---|---|---|
|
#18+
DoomUnitСоздание индекса в большой таблице может занять длительное время. По умолчанию, PostgreSQL позволяет читать (выбирать) из таблицы, параллельно с созданием индекса, но блокирует запись (вставку, обновление и удаление) до конца построения индекса. В производственной среде это часто неприемлемо. Можно позволить запись параллельно с созданием индекса, но есть несколько предостережений, о которых надо быть в курсе - для получения дополнительной информации см. создание индексов без блокировки . После того, как индекс будет создан, система должна поддерживать ее синхронизированным с таблицей. Это добавляет дополнительные расходы на операции с данными. Поэтому индексы, которые редко или никогда не используются в запросах должны быть удалены. Получается динамически создавть индексы для данных последних дней не получится? Создание индекса на современном Postgresql (с CONCURRENTLY) не блокирует вообще ничего. Если запрос выполняется редко - то какой смысл его оптимизировать... пусть медленно работает. Если же надо чтобы он работал быстрее - без правильных индексов вы его никак не ускорите. Точка. Или/или. PS: динамическое создание индексов штука не особо осмысленная в 99% случаев. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2015, 10:38 |
|
||
|
Postgres оптимизация вопроса?
|
|||
|---|---|---|---|
|
#18+
тогда видится такое решение - создание какой то буферной таблицы с ротацией в неделю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2015, 10:45 |
|
||
|
Postgres оптимизация вопроса?
|
|||
|---|---|---|---|
|
#18+
DoomUnit ваша проблема в незнании основ. Просто создайте индекс для F_Date ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2015, 11:24 |
|
||
|
Postgres оптимизация вопроса?
|
|||
|---|---|---|---|
|
#18+
anon2rovan, т.е вас только сортировка смутила? ;) Разные вещи смутили меня, но вопрос-то был сформулирован именно про сортировку:) ТССоздание индекса в большой таблице может занять длительное время. По умолчанию, PostgreSQL позволяет читать (выбирать) из таблицы, параллельно с созданием индекса, но блокирует запись (вставку, обновление и удаление) до конца построения индекса. В производственной среде это часто неприемлемо. Можно позволить запись параллельно с созданием индекса, но есть несколько предостережений, о которых надо быть в курсе - для получения дополнительной информации см. создание индексов без блокировки . Про CONCURRENTLY уже сказали. авторПосле того, как индекс будет создан, система должна поддерживать ее синхронизированным с таблицей. Это добавляет дополнительные расходы на операции с данными. Поэтому индексы, которые редко или никогда не используются в запросах должны быть удалены. Реальные задержки замерял? Ну, там, с индексом, без индекса. Полагаю, что нет. МаксимЕсли запрос выполняется редко - то какой смысл его оптимизировать... пусть медленно работает. Если же надо чтобы он работал быстрее - без правильных индексов вы его никак не ускорите. Точка. Слушай опытных людей, ТС, и не занимайся фигнёй. "Фигня" в данном конкретном случае - это "буферные таблицы" и прочие высосанные из пальца решения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2015, 11:33 |
|
||
|
Postgres оптимизация вопроса?
|
|||
|---|---|---|---|
|
#18+
нет но вот партицирование оно же секционирование как я понимаю то что нужно. а создание индексов и удаление динамически в моем случае не очень понимаю. создание с помощью секцинирования таблицы последних 2 недель вродь как самый оптимальный вариант. конечно можно секции на каждый месяц делать, но трудности возникнут при переходах на другой месяц. а вот секция последних 2х недель то что нужно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2015, 11:38 |
|
||
|
Postgres оптимизация вопроса?
|
|||
|---|---|---|---|
|
#18+
DoomUnitнет но вот партицирование оно же секционирование как я понимаю то что нужно. а создание индексов и удаление динамически в моем случае не очень понимаю. создание с помощью секцинирования таблицы последних 2 недель вродь как самый оптимальный вариант. конечно можно секции на каждый месяц делать, но трудности возникнут при переходах на другой месяц. а вот секция последних 2х недель то что нужно запредельно сказочный долбойоб. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2015, 11:46 |
|
||
|
Postgres оптимизация вопроса?
|
|||
|---|---|---|---|
|
#18+
DoomUnit, зачем тебе динамически создавать и удалять индекс? Вероисповедание запрещает создать его и оставить нетронутым? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2015, 11:47 |
|
||
|
Postgres оптимизация вопроса?
|
|||
|---|---|---|---|
|
#18+
rovanDoomUnit, оба запроса на горячую запускались? Т.е. данные уже подгрузились в буферы? Как-то подозрительно выглядит двухсекундная сортировка менее, чем 10 строк (две секунды смотрю просто по разнице 11 против 9). сортировка занимает положенные 0.4 милисекунды. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2015, 12:12 |
|
||
|
Postgres оптимизация вопроса?
|
|||
|---|---|---|---|
|
#18+
так и как мне в данной ситуации создавать индекс? при добавлениии вешать индекс на время? не очень понимаю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2015, 12:47 |
|
||
|
Postgres оптимизация вопроса?
|
|||
|---|---|---|---|
|
#18+
DoomUnit, вам же написали... для начала создать индекс по F_Date если недостаточно ускорится попробовать создать индекс по (F_TagName_ID, F_Date) если ни то ни другое не поможет то прислать explain analyze в обоих вариантах и можно будет подумать дальше. --Maxim Boguk www.postgresql-consulting.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2015, 13:00 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=38871270&tid=1998196]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
180ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
| others: | 224ms |
| total: | 505ms |

| 0 / 0 |
