Size: a a a

pgsql – PostgreSQL

2021 June 21

Am

Artyom muradyan99 in pgsql – PostgreSQL
Большое спасибо,помогло.
источник

KK

Konstantin K in pgsql – PostgreSQL
select
 sum(case object when 'channel' then transaction else 0 end),
 sum(case object when 'package' then transaction else 0 end)
into v_channel, v_package
from test_task_billing;
источник

V

Valery in pgsql – PostgreSQL
А почему слоты репликации должны появиться на реплике?
источник

S

Slava in pgsql – PostgreSQL
Всем привет, разбираюсь с индексами. Подскажите, пожалуйста ( вопрос чисто теоретический, возможно, какие - то ссылки если дадите, буду благодарен ).

Есть табличка с двумя полями — user_id, status. В status — могут лежать строки 5 типов ( ACCEPT / NOT ACCEPT / YES / NO / OK ).
Меня интересует, как правильно наложить составной индекс, и написать запрос для того, чтобы выборка через равенство ( на вход в запрос подавать user_id, status ), работала оптимально.

Вот, разбираясь — нашёл такую штуку, как селективность индексов, и она тем лучше, чем больше вариантов значений в столбце есть, и как понял в составных индексах нужно указывать сначала те столбцы, для которых селективность выше ( оптимизатор такое любит ).

Вот. Тут я и запутался — если я буду создавать btree индекс по этим двум полям(а после писать запрос ), то индекс будет такой ( user_id, status).
Что меня смутило — в моём представлении ( до того, как я узнал про селективность ), было такое, что составные индексы нужно накладывать так, чтобы отрезать части выборок. Я имею ввиду, что если наложить индекс как ( status, user_id ), то постгрес пойдет в индекс, найдет те записи, у которых нужный мне статус, и среди них найдёт нужный user_id. Но узнав о селективности, я что то совсем запутался
источник

ГА

Георгий Ава... in pgsql – PostgreSQL
Когда приступил к настройке, мне казалось, что это логично.
Т.е. создаю на мастере слот(по сути объект) и он появляется на реплике, что в последствии помогает при переключении роли.
Потом я выяснил, что это не так, и начал задумываться, а как прикрутить скрипт, который будет создавать слот после переключения роли.
А теперь выясняется что слот хоть и не прилетает на реплику, но остается после переключения роли.
Я не могу понять, работа со слотом не попадает в wal?
Получается слоты живут как бы отдельно?
источник

D

Dmitriy in pgsql – PostgreSQL
Очевидно, что юзеров больше, чем статусов, поэтому эффективней user_id вначале делать
источник

ГА

Георгий Ава... in pgsql – PostgreSQL
хотя создать слот на реплике (заранее) не дает
источник

D

Dmitriy in pgsql – PostgreSQL
Т.е. по user_id записей будет меньше, чем по какому-то из статусов
источник

V

Valery in pgsql – PostgreSQL
Слот репликации нужен для того, чтобы на реплику передавать данные и не давать мастеру удалять wal, которые ещё не доехали до реплики. Это один из элементов репликации, он не должен попадать на реплику или в wal
источник

ГА

Георгий Ава... in pgsql – PostgreSQL
а само создание объекта?
источник

V

Valery in pgsql – PostgreSQL
Если будет каскадная реплика то даст
источник

ГА

Георгий Ава... in pgsql – PostgreSQL
Я логический пробовал
ОШИБКА:  логическое декодирование нельзя использовать в процессе восстановления
источник

V

Valery in pgsql – PostgreSQL
Разверните мысль, пока не понимаю
источник

ГА

Георгий Ава... in pgsql – PostgreSQL
Я имел ввиду, физический слот наверное даст создать, для логической репликации не дает создать.
источник

V

Valery in pgsql – PostgreSQL
Потоковая физическая и логическая это разные репликации
источник

ГА

Георгий Ава... in pgsql – PostgreSQL
да, я понимаю
источник

V

Valery in pgsql – PostgreSQL
Вы логическую хотели с реплики на мастер?
источник

ГА

Георгий Ава... in pgsql – PostgreSQL
я к тому, что у меня именно логическая репликация (справочники по нескольким серверам раздаем)
источник

V

Valery in pgsql – PostgreSQL
Хм. Опишите задачу, и что вы делаете. Я запутался
источник

ГА

Георгий Ава... in pgsql – PostgreSQL
нет, есть логическая репликация где, публикующий и подписчики.
публикующий = мастер (сервер1) + реплика(сервер2)
подписчик = мастер(сервер3) + реплика(сервер4)
...

при это если у подписчика меняется мастер-нода проблем нет.
Но если у публикующего меняется мастер-нода, возникает нюанс со слотами,
которых нет на новой мастер-ноде и их надо создать.
А теперь получается, что если слот был ранее создан, то все норм?
Т.е. мастер(создал слот)->реплика->мастер(слот уже есть)
источник