Size: a a a

pgsql – PostgreSQL

2021 March 03

AG

Alex Grigorev in pgsql – PostgreSQL
реплика без нагрузки доехала
sudo -u postgres psql -Atc 'SELECT EXTRACT(EPOCH FROM (now() - pg_last_xact_replay_timestamp()))::INT;'
0
источник

VY

Victor Yegorov in pgsql – PostgreSQL
потоковая работает?
источник

AG

Alex Grigorev in pgsql – PostgreSQL
да, на мастере тоже статус слота ок
postgres=# select * from pg_replication_slots;
slot_name | plugin | slot_type | datoid | database | temporary | active | active_pid | xmin | catalog_xmin |  restart_lsn  | confirmed_flush_lsn
-----------+--------+-----------+--------+----------+-----------+--------+------------+------+--------------+---------------+---------------------
pg05      |        | physical  |        |          | f         | t      |     110885 |      |              | 837D/8EF97DB0 |
(1 row)
источник

VY

Victor Yegorov in pgsql – PostgreSQL
что показыват show hot_standby_feedback; на реплике ?
источник

AG

Alex Grigorev in pgsql – PostgreSQL
эту штуку я не стал включать
источник

AG

Alex Grigorev in pgsql – PostgreSQL
настроил
max_standby_archive_delay = 900s
max_standby_streaming_delay = 900s
источник

AG

Alex Grigorev in pgsql – PostgreSQL
точнее, пробовал сначала с ней.. то же самое было - уехала реплика
источник

VY

Victor Yegorov in pgsql – PostgreSQL
если у вас такие симптомы — включите, поможет. она как раз для активно нагруженных реплик.
а вот параметры выше означают, что ваши запросы могут на 15 минут блокировать репликацию
источник

AG

Alex Grigorev in pgsql – PostgreSQL
ок, пробую
источник

VY

Victor Yegorov in pgsql – PostgreSQL
Alex Grigorev
точнее, пробовал сначала с ней.. то же самое было - уехала реплика
а как пробовали? может быть надо было дать реплике прожевать WAL сгенерированный до включения этого параметра?
источник

AG

Alex Grigorev in pgsql – PostgreSQL
да вы правы возможно так и было
источник

AG

Alex Grigorev in pgsql – PostgreSQL
похоже так все и было, все завелось и работает
источник

AG

Alex Grigorev in pgsql – PostgreSQL
спасибо!
источник

AG

Alex Grigorev in pgsql – PostgreSQL
вот уж точно лучшее враг хорошего, прочитал рекомендацию не использовать hot_standby_feedback
источник

DA

Danil Andreyev in pgsql – PostgreSQL
Господа, у меня проблема
Мне нужно сделать объеденение двух результатов запросов из одной таблицы с сохранением сортировки, она разная у обоих запросов.

Задача вывести первыми 5 последних записей из users
После выводить всех юзеров с сортировкой уже другой - по кол-ву подписчиков, там подзапрос

SELECT * FROM users u ... ORDER BY u.created_at DESC LIMIT 5
UNION ALL
SELECT * FROM users u ORDER BY (SELECT COUNT(*) FROM followers ...) DESC


UNION ALL не удаляет дубли, но сохраняет сортировку
UNION удаляет, но не сохраняет сортировку

Че делать?
источник

KK

Konstantin K in pgsql – PostgreSQL
сделать вычисляемый столбец с row_number() over ...
источник

KK

Konstantin K in pgsql – PostgreSQL
обернуть юнион и отсортировать
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Danil Andreyev
Господа, у меня проблема
Мне нужно сделать объеденение двух результатов запросов из одной таблицы с сохранением сортировки, она разная у обоих запросов.

Задача вывести первыми 5 последних записей из users
После выводить всех юзеров с сортировкой уже другой - по кол-ву подписчиков, там подзапрос

SELECT * FROM users u ... ORDER BY u.created_at DESC LIMIT 5
UNION ALL
SELECT * FROM users u ORDER BY (SELECT COUNT(*) FROM followers ...) DESC


UNION ALL не удаляет дубли, но сохраняет сортировку
UNION удаляет, но не сохраняет сортировку

Че делать?
Ни то, ни другое надёжно не сохраняет сортировку, на самом деле (это Вам так "повезло").
Т.е. поместить во вложенный запрос и указать нужную сортировку снаружи, что поделаешь.
источник

DA

Danil Andreyev in pgsql – PostgreSQL
А как указать сортировку снаружи, что первые 5 вывести последние записи, а вторые - уже по кол-ву подписчиков (например)
источник

b

batyrmastyr in pgsql – PostgreSQL
Danil Andreyev
А как указать сортировку снаружи, что первые 5 вывести последние записи, а вторые - уже по кол-ву подписчиков (например)
row_number() как раз даст вам порядковый номер строки в результате запроса. По нему потом и отсортируете.
источник