@pgsql

Страница 720 из 1062
Eugeny
21.03.2018
06:22:32
это если уж совсем надо ин

а так where existis (select null from out o where o.date = i.date ...

Darafei
21.03.2018
06:25:52
Google
Darafei
21.03.2018
06:26:11
select; синтаксически корректное выражение

Eugeny
21.03.2018
06:26:39
Darafei
21.03.2018
06:27:47
ну у нас и чатик про PG

anton
21.03.2018
06:28:12
Примените к tsvector’у unnest
Это даёт все лексем с позициями, а я ищу позиции именно найденных лексем. Что-то вроде ts_headline, только в виде массива позиций

Denis
21.03.2018
06:32:06
Eugeny
21.03.2018
06:34:27
unnest для ts_vector any unnest для ts_query

Denis
21.03.2018
06:34:27
Это даёт все лексем с позициями, а я ищу позиции именно найденных лексем. Что-то вроде ts_headline, только в виде массива позиций
Вы можете разложить tsvectot через unnest и пересечь с ключами из tsquery, например. Но я не понимаю, что вы решаете за задачу

Кстати, если использовать rum вместо gin, то можно не держать в таблице tsvector, так как rum не требует recheck. Может, этот вариант будет добрее и не нужно будет раскладывать tsvector, а просто находить нужные кортежи из таблицы?

anton
21.03.2018
06:49:36
Вы можете разложить tsvectot через unnest и пересечь с ключами из tsquery, например. Но я не понимаю, что вы решаете за задачу
Я хочу определить, в каком именно месте документа сработал запрос. То есть из запроса вида "select 'cat:1 hate:2 dog:3':tsvector @@ 'hate&dog':tsquery" я хочу получить не "t", а "{2, 3}". Да, можно пересечь отдельные лексемы с tsquery , но это сработает только в случае односложных tsquery.

Mikhail
21.03.2018
07:01:47
<БАБУШКА_MODE> Меня одного начинает бить мелкая дрожь от вопросов, содержащих словосочетание: "а можно сделать" ? :) </БАБУШКА_MODE>

Google
Darafei
21.03.2018
07:10:34
а я вчерашний вечер провёл за чтением пейпера про эволюцию, чего и вам желаю https://arxiv.org/pdf/1803.03453v1.pdf там много примеров про то, что бывает, если забыть дописать все условия в where

Аггей
21.03.2018
07:24:59
правильный ответ "разрешаю"
Ой есть хорошая шутка по этому поводу из личного опыта ) http://ps.tmpc.ru/672377062030 содержит мат

Mike Chuguniy
21.03.2018
08:01:36
Ой есть хорошая шутка по этому поводу из личного опыта ) http://ps.tmpc.ru/672377062030 содержит мат
Не, я в другой армии служил, у нас более нейтральный ответ на "можно" был: можно Машку за ляжку, козу на возу, а у нас разрешите!

Аггей
21.03.2018
08:02:07
Зато запоминается с 1й попытки )

Hetag
21.03.2018
08:02:23
Привет всем есть люди которые работали с вк api

Mikhail
21.03.2018
08:04:13
1800 человек в чате

ААААА

Hetag
21.03.2018
08:06:55
??

Mikhail
21.03.2018
09:09:49
Коллеги, занимаюсь секционированием забиксовых таблиц

и вот что придумал

разбить history по месяцам

через наследование и check по месяцу от unixtime

в связи с чем вопрос

сильно будет тупить добавление в таблицу при check месяц(дата(unixtime)) ?

или... надо посмотреть есть ли функция, получающая месяц от unixtime!

Darafei
21.03.2018
09:17:00
тебе нужен настоящий месяц или месяцеподобный интервал?

можно просто порезать по 86400*365/12=2628000 секунд

Mikhail
21.03.2018
09:20:13
Мне нужно разнести в разные таблы данные с юникстаймом по месяцам

Yaroslav
21.03.2018
09:38:45
Коллеги, занимаюсь секционированием забиксовых таблиц
А зачем, если не секрет? А для работы с unix time есть вроде только to_timestamp()...

Аггей
21.03.2018
09:39:31
разбить history по месяцам
По месяцам плохо

Google
Аггей
21.03.2018
09:39:53
Я выше писал - норм по itemid

Вы соберите в badger запросы - поймёте, что даты вам ничем не помогут

Mikhail
21.03.2018
09:41:30
Аггей
21.03.2018
09:41:53
Точнее в history обычно хранится меньше месяца

Старые данные в trends

Mikhail
21.03.2018
09:42:26
и их тоже

Yaroslav
21.03.2018
09:42:27
а потому что history разрослась до 100ГБ
И что? Партиционирование-то тут причём?

Mikhail
21.03.2018
09:43:17
т.е. вы уверены что разбиение жирных таблиц на сегменты не прибавит производительности забиксу? ваши предложения?

Петр
21.03.2018
09:43:53
эти 4 варианта не понравились? https://www.zabbix.org/wiki/Main_Page

Mikhail
21.03.2018
09:45:33
хорошая ссылка

а по конкретнее?

Yaroslav
21.03.2018
09:45:57
т.е. вы уверены что разбиение жирных таблиц на сегменты не прибавит производительности забиксу? ваши предложения?
Партиционирование почти никогда не прибавляет производительности (по сравнению с индексацией), а вот отнимает —- запросто. Соответственно, предлагаю разобраться с запросами и индексировать.

Mikhail
21.03.2018
09:46:35
это общая фраза

Mikhail
21.03.2018
09:46:53
а вот документация postgrespro говорит об обратном

Artyem
21.03.2018
09:47:00
т.е. вы уверены что разбиение жирных таблиц на сегменты не прибавит производительности забиксу? ваши предложения?
в мускуле прибавило, на некоторых таблицах даже на дневные партиции перешли

Mikhail
21.03.2018
09:47:14
в ПГ тоже прибавляет

Петр
21.03.2018
09:47:41
что вам поконкретнее надо? гляньте 4 варианта партицирования может что-то подойдет вам, хотя бы https://www.zabbix.org/wiki/Docs/howto/zabbix2_postgresql_autopartitioning

Mikhail
21.03.2018
09:47:47
просто не хочу тупо по хуту делать, а с осознанием предмета

Yaroslav
21.03.2018
09:47:47
Это postgres такой плохой или архитектура данных?
Наоборот, если где-то _помогает_ то это СУБД —- "такая плохая", внезапно. :)

Google
Yaroslav
21.03.2018
09:48:22
в ПГ тоже прибавляет
Ну вы же не измеряли по сравнению с индексацией, сознайтесь.

Mikhail
21.03.2018
09:48:36
я верю документации ;)

например вот https://postgrespro.ru/docs/postgrespro/9.6/ddl-partitioning

Sergey
21.03.2018
09:49:56
Наоборот, если где-то _помогает_ то это СУБД —- "такая плохая", внезапно. :)
Мои задачи очень ускоряет partition-wise join, partition pruning и range-hash partitioning.

Mikhail
21.03.2018
09:50:52
речь не про ваши задачи, а о заббиксе =)

Аггей
21.03.2018
09:51:56
Ну вы же не измеряли по сравнению с индексацией, сознайтесь.
Я секционировал pg_pathman. По itemid, таблицы history и trends. Снижает нагрузку за счёт быстрого housekeeping и автовакуума

Yaroslav
21.03.2018
09:52:36
я верю документации ;)
В документации много чего написано... "интересного". ;) Вот цитата оттуда, кстати: "Секционирование может сыграть роль ведущих столбцов в индексах" И на этом, по большому счёту, всё. Т.е. многие случаи ускорения связаны с seqscan-ами и т.п.

Я секционировал pg_pathman. По itemid, таблицы history и trends. Снижает нагрузку за счёт быстрого housekeeping и автовакуума
А вот это, безусловно, важно. И в этом и есть основной смысл партиционирования.

Аггей
21.03.2018
09:53:20
Нагрузка точнее - та же - но растянута во времени. Что повышает отзывчивость вэб интерфейса до 20 раз

Петр
21.03.2018
09:54:07
Я секционировал pg_pathman. По itemid, таблицы history и trends. Снижает нагрузку за счёт быстрого housekeeping и автовакуума
Если бы секционировали по времени, то пылесос вообще можно отключить наверное. По большей части именно он и грузит систему вроде)

Петр
21.03.2018
09:54:57
Хранить партиции за год

Аггей
21.03.2018
09:55:17
Это 1 или 2 item который будет перебирать все партиции

Петр, я пробовал по времени

Пылесоса это не отменяет

Петр
21.03.2018
09:56:27
Я бы вообще от него избавился, вся нагрузка от него

Аггей
21.03.2018
09:56:40
Потому, что housekeeper все равно чистит

Mikhail
21.03.2018
09:57:00
что вам поконкретнее надо? гляньте 4 варианта партицирования может что-то подойдет вам, хотя бы https://www.zabbix.org/wiki/Docs/howto/zabbix2_postgresql_autopartitioning
Первая же строка из ссылок которые вы порекомендовали. ;) Main culprit of slow and long Housekeeping process is usually the size of several tables, history, history_uint, trends and trends_uint. Overall performance is significantly improved by using PostgreSQL table partitioning (inheritance) model and splitting these tables on monthly basis.

Т.е. я рою в правильном направлении

Google
Аггей
21.03.2018
09:57:49
Михаил, раз вам все равно рыть. Давайте сделаем замеры?

Аггей
21.03.2018
09:59:52
Сначала без секционирования график за пару дней. Потом разбейте по времени (но я бы на вашем месте поглядел свойства элементов данных. Там есть время хранения значения и время хранения изменений)... Снял график за пару дней. А потом по itemid и тоже снял график

Так сказать ударим практикой по теории

Yaroslav
21.03.2018
10:00:15
что быстрее: поиск по индексу в таблице из 100млн. записей или поиск по аналогичному индексу в таблице с 10млн записей?
Какой "поиск по индексу" конкретно? Выборка одного значения / диапазона? Или полное сканирование?

Yaroslav
21.03.2018
10:02:06
Диапазон там
Тогда почти одинаково. А вот контрвопрос: Что быстрее: планирование запрос по обычной таблице или по 50-и партициям?

Аггей
21.03.2018
10:03:15
У pathman патриция выбирается вроде как другим способом

Mikhail
21.03.2018
10:04:10
Так сказать ударим практикой по теории
я бы с удовольствием. Но нет такой роскоши,к сожалению. Потому и обратился за советом.

Yaroslav
21.03.2018
10:05:50
У pathman патриция выбирается вроде как другим способом
Да, другим. Так он что, выбирает партции быстрее, чем планируется запрос по несекционированной таблице?

Аггей
21.03.2018
10:06:50
Фактически задача разбивается на 2 - выбор секции и планирование запроса по 1 секции

Mikhail
21.03.2018
10:07:26
или по нескольким секциям...

Artyem
21.03.2018
10:13:14
дропать данные партициями кстати тоже быстрее, чем удалять строки по условию, что важно для заббикса (но это не стандартный режим работы будет и придётся делать руками)

Mikhail
21.03.2018
10:14:11
а дропать по условию из меньшей по размеру таблицы? имхо это тоже быстрее :)

Yaroslav
21.03.2018
10:14:53
а дропать по условию из меньшей по размеру таблицы? имхо это тоже быстрее :)
Нет, имеется в виду, что вы просто делаете DROP TABLE для секции, и это гораздо быстрее.

Konstantin
21.03.2018
10:14:58
Партицирование может дать выигрыш если а) большинство запросов локальные, т.е. затрагивают тоько один партишин. б) используются вторичные индексы Первое вроде очевидно, второе - надо пояснить. Да, поиск в индексе с 10 млн записей быстрее чем поиск в индексе с 100млн. записей. Но не в 10 раз а в log(10). Тка что, если запросы делаются воссновном по какому-то относительно недавнему диапазаону времени, то эффекта от партицирования почти не будет. Но вот если задействованы вторичные индекы, по которым данные не упорядочены, и глобальный индекс целиком не влезает в память, а индекс на партишин -влезает, то тогда партицирвание может разогнать на порядок.

Mikhail
21.03.2018
10:16:18
вывод - мелко нарезать таблы :)

Страница 720 из 1062