|
|
|
Не срабатывае boolean индекс при false
|
|||
|---|---|---|---|
|
#18+
Подскажите почему не срабатывает boolean индекс при выборке false ? Я уже даже добавил отрицательный индекс и все равно идет Seq Scan. Vacuum Analyze делал. 9.5 версия. Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2016, 13:41 |
|
||
|
Не срабатывае boolean индекс при false
|
|||
|---|---|---|---|
|
#18+
nateless, Потому что при mem_pool = true планировщик ожидает получить 35210 записей, а при mem_pool = false - 117331903 записей. Вот он и считает, что для false дешевле сделать sec scan. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2016, 13:48 |
|
||
|
Не срабатывае boolean индекс при false
|
|||
|---|---|---|---|
|
#18+
Павел Лузанов, Хм, а как можно оптимизировать что бы он давал все таки по индексу? так как выборка по seq scan занимает минуту, а надо не больше 10ms уложиться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2016, 13:49 |
|
||
|
Не срабатывае boolean индекс при false
|
|||
|---|---|---|---|
|
#18+
nateless, А кто сказал, что по индексу будет быстрее? 1. сколько записей в таблице? 2. Что показывает select reltuples from pg_class where oid = 'trx'::regclass; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2016, 13:56 |
|
||
|
Не срабатывае boolean индекс при false
|
|||
|---|---|---|---|
|
#18+
natelessПавел Лузанов, Хм, а как можно оптимизировать что бы он давал все таки по индексу? так как выборка по seq scan занимает минуту, а надо не больше 10ms уложиться. А приведите-ка EXPLAIN ANALYZE SELECT... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2016, 13:59 |
|
||
|
Не срабатывае boolean индекс при false
|
|||
|---|---|---|---|
|
#18+
nateless, а ваш HDD сможет прочесть 117331903 вайт за 10мс? и да 117331903 ещё умножать на ширину записи надо. недумается что будет быстрее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2016, 14:00 |
|
||
|
Не срабатывае boolean индекс при false
|
|||
|---|---|---|---|
|
#18+
Вдруг что-нибудь будет заметно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2016, 14:00 |
|
||
|
Не срабатывае boolean индекс при false
|
|||
|---|---|---|---|
|
#18+
Павел Лузанов, Около 116М и каждый день добавляется около 200к, сначала они все поступают как mem_pool=true потом переходят в false. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2016, 14:01 |
|
||
|
Не срабатывае boolean индекс при false
|
|||
|---|---|---|---|
|
#18+
nateless, Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2016, 14:03 |
|
||
|
Не срабатывае boolean индекс при false
|
|||
|---|---|---|---|
|
#18+
ХЗ. Вакуум как настраивался? Может попробовать поагрессивнее настроить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2016, 14:06 |
|
||
|
Не срабатывае boolean индекс при false
|
|||
|---|---|---|---|
|
#18+
ОКТОГЕН, Он не срабатывает, так как сразу после ваакума он все равно делает seq scan, так что смысла играться с вакумом пока не вижу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2016, 14:08 |
|
||
|
Не срабатывае boolean индекс при false
|
|||
|---|---|---|---|
|
#18+
nateless, то есть в запросе SHOW ALL; Что показывают строчки, начинающиеся на autovacuum? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2016, 14:09 |
|
||
|
Не срабатывае boolean индекс при false
|
|||
|---|---|---|---|
|
#18+
natelessОКТОГЕН, Он не срабатывает, так как сразу после ваакума он все равно делает seq scan, так что смысла играться с вакумом пока не вижу. Ок. А он один раз срабатывает, или постоянно потоком идут запросы такого вида? Если запросы вызываются потоком, то смысл вижу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2016, 14:10 |
|
||
|
Не срабатывае boolean индекс при false
|
|||
|---|---|---|---|
|
#18+
Индекс включить можно через предварительное отключение: set enable_seqscan to off; Но должно стать еще хуже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2016, 14:11 |
|
||
|
Не срабатывае boolean индекс при false
|
|||
|---|---|---|---|
|
#18+
ОКТОГЕН, Пробовали останавливать апдейты так что после вакума не было новых записей когда делали проверку, поэтому и думаю что он тут не причем. Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2016, 14:11 |
|
||
|
Не срабатывае boolean индекс при false
|
|||
|---|---|---|---|
|
#18+
nateless, Планировщик всё правильно делает. Индекс не всегда означает, что будет быстрее. В вашем случае 99% записей. Если вы заставите базу идти через индекс, то она будет читать и 99% индеса, и 99% таблицы. Это потому, что видимость данных храниться в таблице. А так — читается только таблица, что очевидно быстрее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2016, 14:27 |
|
||
|
Не срабатывае boolean индекс при false
|
|||
|---|---|---|---|
|
#18+
nateless, а если попробовать Код: sql 1. (т.е. *, а не id) index only scan появляется в плане? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2016, 14:31 |
|
||
|
Не срабатывае boolean индекс при false
|
|||
|---|---|---|---|
|
#18+
Возможно, вы упёрлись в дисковую систему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2016, 14:32 |
|
||
|
Не срабатывае boolean индекс при false
|
|||
|---|---|---|---|
|
#18+
Alexiusnateless, а если попробовать Код: sql 1. (т.е. *, а не id) index only scan появляется в плане? Чтобы он отрабатывал, надо чтоб успевались все необходимые биты проставляться. Это только после вакуума возможно, даже после вставки. А если поле поменялось в большой части записей - тем более работать не будет. Вот для архивных таблиц - это - тема, что надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2016, 14:35 |
|
||
|
Не срабатывае boolean индекс при false
|
|||
|---|---|---|---|
|
#18+
ОКТОГЕН, ТС не говорил что какие-то проблемы с вакуумом у него, тем более что руками vacuum запускался. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2016, 14:39 |
|
||
|
Не срабатывае boolean индекс при false
|
|||
|---|---|---|---|
|
#18+
vyegorov, Есть какие-то варианты ускорить выполнение? Может партицирование? Будем пробовать кешировать число на сервисе, но хотелось бы исполнение запроса не в минуту как сейчас. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2016, 14:41 |
|
||
|
Не срабатывае boolean индекс при false
|
|||
|---|---|---|---|
|
#18+
nateless, Если таблица часто меняется, то IOS вряд ли можно выжать, иначе — подбирайте запрос с индексом так, чтобы оно завелось. Если приблизительно сойдёт, то можно из статистики тащить: pg_stats.most_common_freqs[X] * pg_class.reltuples (где Х — индекс для значения `false` из `most_common_vals`). Но это будет очень приблизительно. А так — через триггера поддерживайте актуальные счётчики во вспомогательной таблице. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2016, 14:55 |
|
||
|
Не срабатывае boolean индекс при false
|
|||
|---|---|---|---|
|
#18+
vyegorov<>А так — через триггера поддерживайте актуальные счётчики во вспомогательной таблице. только именно в таблице, а не как тут один, на говнохабре, статью не так давно тискал -- в сиквенсах каунты считал. даже миша тюрин, и тот -- автора обматерил. а давно ли сам таймстамп как ид транзакции пользовал. на таблицах каунтов 2 техники. с очередями и без. (вторая -- с подбором кучек ). обе они, к сожалению , пухнут индексами изрядно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2016, 15:08 |
|
||
|
Не срабатывае boolean индекс при false
|
|||
|---|---|---|---|
|
#18+
qwwq, А можно подробнее про две техники? (ссылками на статьи было бы замечательно.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2016, 15:14 |
|
||
|
Не срабатывае boolean индекс при false
|
|||
|---|---|---|---|
|
#18+
vyegorovqwwq, А можно подробнее про две техники? (ссылками на статьи было бы замечательно.)да примитивно: 1. с очередями на уникъю. 2. без уникъю, с джобом [тикером] подбора кучи , заменой подобранного на 1 свежую запись с SUM(). -- 1-е -- стандарт вообще. -- 2.-е даже 1с умеют. я 2 делал без тикера, но с дополнительной нагрузкой на вставку . лочил no wait то, что было свободно, и подбирал в общую кучку. понятно, что это затратнее разделения труда. правда я не каунты считал, а карту срезов для отложенного сбора статистики составлял. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2016, 15:59 |
|
||
|
|

start [/forum/topic.php?fid=53&fpage=95&tid=1997353]: |
0ms |
get settings: |
10ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
52ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
73ms |
get tp. blocked users: |
1ms |
| others: | 216ms |
| total: | 389ms |

| 0 / 0 |
