Size: a a a

pgsql – PostgreSQL

2020 May 28

l

lnuynxa in pgsql – PostgreSQL
Максим
Ребята, а как в postgresql оптимально, и главное правильно агрегировать данные, например
кол-во в каждой десятиминутке? (в таблице записан timestamp without timezone)
источник

М

Максим in pgsql – PostgreSQL
Спасибо
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Максим
Ребята, а как в postgresql оптимально, и главное правильно агрегировать данные, например
кол-во в каждой десятиминутке? (в таблице записан timestamp without timezone)
Обычно используется date_trunc() или EXTRACT(EPOCH FROM ...) / date_part (+, возможно, to_timestamp())...
А, ответили уже...

> (в таблице записан timestamp without timezone)

А зря. Только что же обсуждали. ;)
источник

М

Максим in pgsql – PostgreSQL
Я знаю, Ярослав, мы и ранее с тобой обсуждали. Но очень опасно его менять....
источник

М

Максим in pgsql – PostgreSQL
я ж не могу сделать alter column для изменения типа данных и быть уверенным что ниче не полетит
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Максим
Я знаю, Ярослав, мы и ранее с тобой обсуждали. Но очень опасно его менять....
Ну и вот даже в этом конкретном примере — с timestamp вариант "через epoch" уже без дополнительных "плясок" не работает, потому что to_timestamp()  возвращает timestamptz.
Т.е. если аккуратно исполнять все эти "пляски"— работать можно... но зачем? ;)
источник

V💩

Vlad 💩 in pgsql – PostgreSQL
Ребята а есть ли смысл выносить поле из таблицы в другую таблицу которое в большинстве случает имеет null но нужно при каждом запросе? Допустим тот же soft delete мы можем создать поле deleted_at и deleted_by в таблице а можем вынести в отдельную таблицу эти поля, но если мы выносим нам все равно придется каждый раз джойнить и проверять в каких строках null что бы показывать только живые
источник

VY

Victor Yegorov in pgsql – PostgreSQL
Vlad 💩
Ребята а есть ли смысл выносить поле из таблицы в другую таблицу которое в большинстве случает имеет null но нужно при каждом запросе? Допустим тот же soft delete мы можем создать поле deleted_at и deleted_by в таблице а можем вынести в отдельную таблицу эти поля, но если мы выносим нам все равно придется каждый раз джойнить и проверять в каких строках null что бы показывать только живые
зависит от запросов. можно оставить, а для поиска создать ON (deleted_at) WHERE deleted_at IS NOT NULL индекс
такие индексы исользуются базой даже без явного указания предиката в `WHERE`-части запроса
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Vlad 💩
Ребята а есть ли смысл выносить поле из таблицы в другую таблицу которое в большинстве случает имеет null но нужно при каждом запросе? Допустим тот же soft delete мы можем создать поле deleted_at и deleted_by в таблице а можем вынести в отдельную таблицу эти поля, но если мы выносим нам все равно придется каждый раз джойнить и проверять в каких строках null что бы показывать только живые
Если Вы имеете в виду именно вынос поля (а не разделение таблицы на таблицы актуальных и удалённых записей) — смысла в этом нет (по крайней мере, я не вижу ситуации, в которой это на самом деле было бы лучше).
источник

V💩

Vlad 💩 in pgsql – PostgreSQL
Victor Yegorov
зависит от запросов. можно оставить, а для поиска создать ON (deleted_at) WHERE deleted_at IS NOT NULL индекс
такие индексы исользуются базой даже без явного указания предиката в `WHERE`-части запроса
хмм, а как быть тогда когда мне нужно будет показать удаленные? я смогу это сделать с таким индексом?
источник

VY

Victor Yegorov in pgsql – PostgreSQL
Vlad 💩
хмм, а как быть тогда когда мне нужно будет показать удаленные? я смогу это сделать с таким индексом?
SELECT * FROM tab WHERE deleted_at IS NOT NULL ?
источник

V💩

Vlad 💩 in pgsql – PostgreSQL
Yaroslav Schekin
Если Вы имеете в виду именно вынос поля (а не разделение таблицы на таблицы актуальных и удалённых записей) — смысла в этом нет (по крайней мере, я не вижу ситуации, в которой это на самом деле было бы лучше).
я имел ввиду вынос поля. А это как "разделение таблицы на таблицы актуальных и удалённых записей"? создавать 2 таблицы с одинаковым набором полей?
источник

VY

Victor Yegorov in pgsql – PostgreSQL
а какую задачу решаете?
источник

V💩

Vlad 💩 in pgsql – PostgreSQL
Victor Yegorov
SELECT * FROM tab WHERE deleted_at IS NOT NULL ?
я просто не понимаю как отработает ваш индекс, если у меня почти везде нужно скрывать удаленные записи а потом в месте "Корзина" показывать.
EDIT
вот это часть не понятна "такие индексы исользуются базой даже без явного указания предиката в WHERE-части запроса"
источник

s0

shuu 01 in pgsql – PostgreSQL
есть ли разница с какой реплики в кластере снимать бэкап или лучше это делать всегда с мастера?
источник

l

lnuynxa in pgsql – PostgreSQL
shuu 01
есть ли разница с какой реплики в кластере снимать бэкап или лучше это делать всегда с мастера?
разве реплики создают WAL файлы?
источник

AN

Alexander Nikitin in pgsql – PostgreSQL
shuu 01
есть ли разница с какой реплики в кластере снимать бэкап или лучше это делать всегда с мастера?
Было выступление Сальникова на эту тему, про то, что не надо снимать бэкапы с реплик. На мой взгляд, если мониторинг настроен и видно, что реплики не отстают, то пусть снимается бэкап с реплики (я pg_probackup  использовал).
источник

l

lnuynxa in pgsql – PostgreSQL
Alexander Nikitin
Было выступление Сальникова на эту тему, про то, что не надо снимать бэкапы с реплик. На мой взгляд, если мониторинг настроен и видно, что реплики не отстают, то пусть снимается бэкап с реплики (я pg_probackup  использовал).
но речь идет только о полных бекапах?
источник

AN

Alexander Nikitin in pgsql – PostgreSQL
а что такое полный бэкап?
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Vlad 💩
я имел ввиду вынос поля. А это как "разделение таблицы на таблицы актуальных и удалённых записей"? создавать 2 таблицы с одинаковым набором полей?
Да. Но это тоже совсем не радость (в плане последующего DDL и даже работы с этим всем), конечно.
Поэтому лучше просто не выносить.
источник