
Dmitriy
18.01.2018
15:50:36
я могу данные в интефейсе забить
и показать результат)

Yaroslav
18.01.2018
15:51:18
Запросы через рабочий интерейс без проблем
Вот это можете, например (вызовет сканирование всего индекса, сразу предупреждаю)?
SELECT MIN(cnt) AS mincnt, AVG(cnt) AS avgcnt, MAX(cnt) AS maxcnt
FROM (
SELECT insideip, COUNT(*) AS cnt
FROM flowlog
GROUP BY insideip
) AS a

Dmitriy
18.01.2018
15:51:53
фигня получится

Google

Dmitriy
18.01.2018
15:51:59
там несколько типов траафика
нужно еще фильтра по инсайду делать

Yaroslav
18.01.2018
15:53:17
там несколько типов траафика
Дело-то в том, что в присланных искуственных данных, на которых мы тут собираемся чего-то воспроизводить, результат примерно такой:
1, 1.0011, 3

Dmitriy
18.01.2018
15:54:15
ну вот смотрите. ПАТ: за 17:00 18:00 для одного аутсайда я нашел 170 записей

Yaroslav
18.01.2018
15:55:27

Dmitriy
18.01.2018
15:55:43
В этот аут сайд попадает один инсайд. Для него в выборке есть 13 записей
за тот же период
т.е. данные от того, что хочешь найти будут сильно разниться
может найтись и одна запись
и 150
в заисимости от того как пользуются инетом

Yaroslav
18.01.2018
15:57:19

Dmitriy
18.01.2018
15:57:38
я бы 3 приблизил к минимуму

Google

Dmitriy
18.01.2018
15:57:50
микроблоки быстро протухают
но тут нужно в сетях немного разбираться, что бы это в голове уложилось)
по этому этим сервисом занялся я, а не кодеры наши)

Yaroslav
18.01.2018
15:59:57

Dmitriy
18.01.2018
16:03:52
иногда нужно
индекс по выражению не прижился
часто данные изменяются

Yaroslav
18.01.2018
16:04:43
иногда нужно
Почему не parital index, в таком случае (c WHERE timeend = 0)?

Dmitriy
18.01.2018
16:05:00
я его обозвал "по выражению"
не прижился
данные очень часто меняются

Yaroslav
18.01.2018
16:05:48

Dmitriy
18.01.2018
16:08:56
Ну пример: Открытый микроблок - это запись с timeend = 0. Когда микроблок закрывается, прилетает такая же, только с timeend = unixtime. Старая удаляется, на ее место вставляется вместо удаленной.
Плюс еще не всегда прилетают данные о закрытии сессии (udp используется). И приходится их скриптом прогонять и закрывать по томуже принципу, но штамповать timeend = timestart + 12 часов
из-за частого перестроения данных все тупило
опытным путем пришел к тому, что интекс без выражения работает лучше

Admin
ERROR: S client not available

Dmitriy
18.01.2018
16:10:16
но это штука в целом нужна раз в месяц)

Yaroslav
18.01.2018
16:16:41

Google

Dmitriy
18.01.2018
16:17:08
9.6 пг. Индекс был WHERE timeend = 0

Yaroslav
18.01.2018
16:18:49

Dmitriy
18.01.2018
16:19:00
база вся
проц подрастал и io
через какое-то время


Yaroslav
18.01.2018
17:48:50
Я про свой запрос.
Ну вот попробовал я как-то партиционировать (на данных, "приближенных к реальным", но всего около 1M записей ;) ).
Вышло 15 partitions по timestart (с неравномерным распределением, т.е. где-то 20K записей, где-то 100K).
И вот запрос (без partitions):
EXPLAIN (ANALYZE, BUFFERS)
SELECT timestart, (max(timeend)) as timeend,
insideip as internalip, outsideip as externalip, startport, endport
FROM flowlog_real
WHERE (timeend = 0 OR timeend >= 1512143634) — time_from
AND timestart <= 1512146131 — time_to
AND insideip = '10.128.26.23'
GROUP BY timestart, insideip, outsideip, startport, endport
ORDER BY timestart, insideip, outsideip;
Даёт:
Buffers: shared hit=32
Planning time: 0.721 ms
Execution time: 0.413 ms
Тогда как (из партиционированной таблицы):
EXPLAIN (ANALYZE, BUFFERS)
SELECT timestart, (max(timeend)) as timeend,
insideip as internalip, outsideip as externalip, startport, endport
FROM flowlog_real_partitioned
WHERE (timeend = 0 OR timeend >= 1512143634) — time_from
AND timestart <= 1512146131 — time_to
AND insideip = '10.128.26.23'
GROUP BY timestart, insideip, outsideip, startport, endport
ORDER BY timestart, insideip, outsideip;
Buffers: shared hit=98
Planning time: 5.362 ms
Execution time: 1.141 ms
Это native (declarative) partitioning из 10-ки, pg_pathman у меня нет.
Но никакого partition elimination не происходит, конечно.


Nikolay
18.01.2018
19:53:18
соц опрос https://twitter.com/postgresmen/status/954069814317740032

Dmitry
18.01.2018
20:04:43
http://downrightnow.com/twitter

Nikolay
18.01.2018
22:15:22
апперкейсники начили нажимать, догоняют

Yaroslav
18.01.2018
22:27:59

Nikolay
18.01.2018
22:54:10
Это аппер, конечно. Речь про ключевые слова.

Yaroslav
18.01.2018
22:55:47