@pgsql

Страница 448 из 1062
Maksim
30.08.2017
07:40:07
ребята, привет, настроил wal репликацию, смотрю на слейве # select now()-pg_last_xact_replay_timestamp() ; ?column? —--------------- 00:06:30.249946 (1 строка) это отставание реплики или последняя репликация, не совсем понимаю https://postgrespro.ru/docs/postgrespro/9.6/functions-admin.html#functions-recovery-info-table хотелось бы понять, на реплике актуальные у меня данные или нет

Алексей
30.08.2017
07:41:11
сделай какой-нибудь комит на мастере и выполни тот же запрос на слейве

Maksim
30.08.2017
07:42:15
проверял, создавал пустую БД, создавалась на слейве, у меня цель мониторить отставание реплики

пока БД не в продакшене, поэтому pg_last_xact_replay_timestamp() скорей всего такие данные и показывает, но как понять что у меня в принципе данные идентичны мастеру

Google
Алексей
30.08.2017
07:43:29
Если на мастере нет изменений час - на слейве будет отставание час. Если очень грубо.

Maksim
30.08.2017
07:44:26
я так понимаю надо сравнивать pg_last_xlog_receive_location() на мастере и слейве по идее ?

Dmitry
30.08.2017
08:01:13
select greatest(0,pg_xlog_location_diff(pg_current_xlog_location(), replay_location)) from pg_stat_replication where client_addr = '1.2.3.4'

Я вот так снимаю разницу в байтах

Konstantin
30.08.2017
17:43:53
Ребят, привет, нужна помощь В постгресе есть колонка jsonb в которой хранятся id'шники, вида [1, 2, 3, 4] Если мне хочется, допустим, вытащить все данные из таблицы где в этой колонке есть id'шник, скажем 2, я сделаю это так: select * from table where someItmeId @> '2' и буду счастлив Вопрос: как подхачить запрос так, чтобы можно было передавать для выборки список искомых id'шников? Если бы в колонке хранились массивы строк, вида ["1", "2", "3", "4"], тогда заехало бы такое: select * from table where someItmeId ??| ARRAY['2', '4'] Но данные сохранены как инты, из-за этого таким запросом ничего не тащится :C Очевидно, нужно что-то к чему-то кастить, но мне непонятно что, и как)

Yura
30.08.2017
17:51:09
А если вместо jsonb хранить в виде []integer ? Тогда можно будет использовать оператор @> , есои нужно полное вхождение, и && , если пересечение.

Alexander
30.08.2017
17:55:56
Посмотрите https://github.com/postgrespro/jsquery

Ilya
30.08.2017
17:58:10
А что мешает сделать из json массив?

with t AS (Select id from %array%) select * from table inner join t on someItmeId @> t.id

Ну или как-то так, я забыл как выбрать из масива

Yura
30.08.2017
18:09:41
Если так и переделать, какого типа индекс на ней лучше использовать?
Если нужно искать полное вхождение, то скорее подойдет gist. Если пересечение, то gin. Если хочется "побыстрее", можно установить контриб intarray , и использовать его opclass-ы.

Он для тех же операторов свои опклассы добавляет.

Google
Yura
30.08.2017
18:11:03
https://www.postgresql.org/docs/9.6/static/intarray.html

Ilya
30.08.2017
18:12:33
with t AS (select unnest as id from unnest(array[2,4])) select distinct table.* from table inner join t on someItmeId @> t.id Вот так точно сработает

Konstantin
30.08.2017
18:24:19
with t AS (select unnest as id from unnest(array[2,4])) select distinct table.* from table inner join t on someItmeId @> t.id Вот так точно сработает
ERROR: operator does not exist: jsonb @> integer Hint: No operator matches the given name and argument type(s). You might need to add explicit type casts.

В общем-то вопрос снят Всем спасибо

Ilya
30.08.2017
18:26:33
Konstantin
30.08.2017
18:30:06
Да, работает, но на данном этапе реально проще переделать тип колонки на []integer, и обойтись запросами попроще) Тем не менее, спс)

Артур
30.08.2017
22:37:41
Согласно нормализации данных - плохой тон делать неявные связи. но, допустим есть URI, который связан с множеством таблиц. Правильно для каждой таблицы делать URI колонку, но как сделать тогда чтобы эта колонка была для нескольких таблиц Например: news.uri, articles.uri, help.uri все колонки содержат uri и он должен быть уникален на весь проект Я бы сделал uri таблицу содержащую колонки table_name и table_id а там следовательно явных связей уже не будет. Зато всё в одном месте. И нарушу этим правила.

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