Size: a a a

pgsql – PostgreSQL

2021 January 26

A

Ayan in pgsql – PostgreSQL
с блотами вышло +80Гб, все равно не понятно где остальные 120Гб могут лежать
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Ayan
с блотами вышло +80Гб, все равно не понятно где остальные 120Гб могут лежать
Эээ... с чем?
Какая сумма по запросу из "General Table Size Information"?
источник

A

Ayan in pgsql – PostgreSQL
Yaroslav Schekin
Эээ... с чем?
Какая сумма по запросу из "General Table Size Information"?
80Гб+ wastedbytes и wastedibytes
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Ayan
80Гб+ wastedbytes и wastedibytes
Какая сумма total_bytes, в смысле? По сравнению с \l+ много не хватает?
источник

M

Me👀 in pgsql – PostgreSQL
Всем привет! Прошу помочь с запросом.
Есть несколько таблиц, assets, originators, assets_originators, users, users_originators и data_here.
Юзер ассоциируется с оригинатором.
Ассеты тоже с оригинаторами.

На входе я имею user_id, дату (date) и asset_id. Мне нужно сначала зайти в таблицу users_originators, и посмотреть, к каким оригинаторам имеет доступ пользователь.
Потом я иду в таблицу assets_originator и смотрю по asset_id, к какому оригинатору этот ассет относится.
И только потом иду в таблицу data_here, где подсталяю asset_id и список id оригинаторов.
Реализовал в виде вложенных запросов, но кажется, что можно как-то проще.
https://dbfiddle.uk/?rdbms=postgres_11&fiddle=11cd21df2d776e4a2bb486abb6761e1b
источник

b

blkmrkt in pgsql – PostgreSQL
Как выставить wal_sender_timeout внутри subconninfo на реплике? С версии 12 это должно быть можно, но если подставляю wal_sender_timeout=60min, то получаю

could not connect to the publisher: invalid connection option ""wal_sender_timeout"
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Me👀
Всем привет! Прошу помочь с запросом.
Есть несколько таблиц, assets, originators, assets_originators, users, users_originators и data_here.
Юзер ассоциируется с оригинатором.
Ассеты тоже с оригинаторами.

На входе я имею user_id, дату (date) и asset_id. Мне нужно сначала зайти в таблицу users_originators, и посмотреть, к каким оригинаторам имеет доступ пользователь.
Потом я иду в таблицу assets_originator и смотрю по asset_id, к какому оригинатору этот ассет относится.
И только потом иду в таблицу data_here, где подсталяю asset_id и список id оригинаторов.
Реализовал в виде вложенных запросов, но кажется, что можно как-то проще.
https://dbfiddle.uk/?rdbms=postgres_11&fiddle=11cd21df2d776e4a2bb486abb6761e1b
Непонятно, что нужно получить. Если несколько результатов разной структуры, то нужно несколько запросов.
Кстати:
IN ( SELECT DISTINCT(_uo.originator_id) ...

Аж два дефекта в таком коротком коде. ;)
источник

DK

Den KP in pgsql – PostgreSQL
А с какой версии GRANT SELECT ON ALL TABLES IN SCHEMA public TO user; робит 100%?
источник

DK

Den KP in pgsql – PostgreSQL
в 11.5 просто делаю и usage юзеру и all tables и все равно тишина...
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
blkmrkt
Как выставить wal_sender_timeout внутри subconninfo на реплике? С версии 12 это должно быть можно, но если подставляю wal_sender_timeout=60min, то получаю

could not connect to the publisher: invalid connection option ""wal_sender_timeout"
Покажите строку соединения.
источник

M

Me👀 in pgsql – PostgreSQL
Yaroslav Schekin
Непонятно, что нужно получить. Если несколько результатов разной структуры, то нужно несколько запросов.
Кстати:
IN ( SELECT DISTINCT(_uo.originator_id) ...

Аж два дефекта в таком коротком коде. ;)
Нужно из таблицы data_here получить данные, имея asset_id, user_id и date. Но предварительно надо понять, к каким originator_id имеет доступ user_id. Для этого я и бегаю по таблицам )

Два запроса я сделал просто для примера. Типа два варианта  моих) (оставил один)
источник

b

blkmrkt in pgsql – PostgreSQL
Yaroslav Schekin
Покажите строку соединения.
Вот такими образами пробовал, каждый раз ругается на невалидную опцию и называет ее по имени:

... SET subconninfo = 'host=b01 port=12345 user=replication_user password=hunter2 dbname=core wal_sender_timeout=2h'
... SET subconninfo = 'host=b01 port=12345 user=replication_user password=hunter2 dbname=core wal_sender_timeout=3600000'
... SET subconninfo = 'host=b01 port=12345 user=replication_user password=hunter2 dbname=core options="-c wal_sender_timeout=3600000"'
источник

b

blkmrkt in pgsql – PostgreSQL
blkmrkt
Вот такими образами пробовал, каждый раз ругается на невалидную опцию и называет ее по имени:

... SET subconninfo = 'host=b01 port=12345 user=replication_user password=hunter2 dbname=core wal_sender_timeout=2h'
... SET subconninfo = 'host=b01 port=12345 user=replication_user password=hunter2 dbname=core wal_sender_timeout=3600000'
... SET subconninfo = 'host=b01 port=12345 user=replication_user password=hunter2 dbname=core options="-c wal_sender_timeout=3600000"'
Перепроверил -- да, и мастер и реплика у нас версии 12.2
источник

M

Me👀 in pgsql – PostgreSQL
Yaroslav Schekin
Непонятно, что нужно получить. Если несколько результатов разной структуры, то нужно несколько запросов.
Кстати:
IN ( SELECT DISTINCT(_uo.originator_id) ...

Аж два дефекта в таком коротком коде. ;)
Например, У юзера есть доступ к оригинатору 1, но в таблице assets_originators запрашиваемый ассет с тим оригинатором не связан - то значит его показывать не надо.
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Me👀
Нужно из таблицы data_here получить данные, имея asset_id, user_id и date. Но предварительно надо понять, к каким originator_id имеет доступ user_id. Для этого я и бегаю по таблицам )

Два запроса я сделал просто для примера. Типа два варианта  моих) (оставил один)
Казалось бы, JOIN / EXISTS, как обычно, зачем тут несколько запросов?
источник

M

Me👀 in pgsql – PostgreSQL
Yaroslav Schekin
Казалось бы, JOIN / EXISTS, как обычно, зачем тут несколько запросов?
Про JOIN слышал, EXISTS иду читать))
источник

АД

Алексей Долгов... in pgsql – PostgreSQL
Всем привет. Кто знает как можно адекватно распарсить результат pg_get_expr(child.relpartbound,child.oid), фразу вида FOR VALUES FROM ('2019-01-01 00:00:00') TO ('2019-02-01 00:00:00')
мне нужно минимальное и максимальное значение которое может вставляться в секцию.

запрос:
SELECT
   child.relname       AS child,
   pg_get_expr(child.relpartbound,child.oid)
FROM pg_inherits
   JOIN pg_class parent            ON pg_inherits.inhparent = parent.oid
   JOIN pg_class child             ON pg_inherits.inhrelid   = child.oid
   JOIN pg_namespace nmsp_parent   ON nmsp_parent.oid  = parent.relnamespace
   JOIN pg_namespace nmsp_child    ON nmsp_child.oid   = child.relnamespace
WHERE parent.relname='writeoffs' and nmsp_parent.nspname='district_1';

writeoffs_y2019m01  |  FOR VALUES FROM ('2019-01-01 00:00:00') TO ('2019-02-01 00:00:00')
writeoffs_y2019m02  |  FOR VALUES FROM ('2019-02-01 00:00:00') TO ('2019-03-01 00:00:00')

я хочу - writeoffs_y2019m01  |  2019-01-01 00:00:00 |2019-02-01 00:00:00
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
blkmrkt
Вот такими образами пробовал, каждый раз ругается на невалидную опцию и называет ее по имени:

... SET subconninfo = 'host=b01 port=12345 user=replication_user password=hunter2 dbname=core wal_sender_timeout=2h'
... SET subconninfo = 'host=b01 port=12345 user=replication_user password=hunter2 dbname=core wal_sender_timeout=3600000'
... SET subconninfo = 'host=b01 port=12345 user=replication_user password=hunter2 dbname=core options="-c wal_sender_timeout=3600000"'
Так там строка соединения должна быть в обычном формате, вроде бы.
Вот тут даже есть пример именно с wal_sender_timeout: https://www.postgresql.org/docs/current/warm-standby.html#STANDBY-SERVER-SETUP
источник

b

blkmrkt in pgsql – PostgreSQL
Yaroslav Schekin
Так там строка соединения должна быть в обычном формате, вроде бы.
Вот тут даже есть пример именно с wal_sender_timeout: https://www.postgresql.org/docs/current/warm-standby.html#STANDBY-SERVER-SETUP
Это для логического слота подписка, но вроде бы я этот формат тоже пробовал последним примером:

'host=b01 port=12345 user=replication_user password=hunter2 dbname=core options="-c wal_sender_timeout=3600000"'
источник

M

Me👀 in pgsql – PostgreSQL
Yaroslav Schekin
Казалось бы, JOIN / EXISTS, как обычно, зачем тут несколько запросов?
Запрос у меня как бы 1, только с подзапросами)
источник