Size: a a a

pgsql – PostgreSQL

2020 August 13

JD

Jim Di in pgsql – PostgreSQL
логи глянь ещё
источник

OT

One Two in pgsql – PostgreSQL
источник

M

Murena in pgsql – PostgreSQL
Twilight Angelo
предлагаю вынести подзапрос в джоин и убедиться что он не двоит) ошибка говорит об обратном,что возвращается более одной записи
работающий вариант получился вот таким - запрос перенес в FROM - и по итогу получил то что нужно
FROM (SELECT *, row_number() over( order by "voiceCount" DESC) "position" FROM song) song
источник

IC

Igor 🐈 Cuba in pgsql – PostgreSQL
Сап. Какое хранилище лучше выбрать для хранения лишь одной сущности? Если выберать рсубд — так это одна таблица будет, ради одной таблицы разворачивать мускул или постгру имхо не лучший выбор. CSV-файл — ну хз, как его ротировать потом, может подводные свои есть.
Сам сервис представляет собой веб-аппликуху с единственным эндпоинтом. Записей планируется хранить где-то до 100К. На чтение/запись должна быть относительно быстрой, но и в то же время тащить какое-то супир-модное и тяжёлое в развёртывании/управлении асинхронное хранилище не хочу.
источник

IC

Igor 🐈 Cuba in pgsql – PostgreSQL
Сорри, что не совсем про постгру, просто это единственная конфа по стореджам у меня в телеге.
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Andrey Kovtun
доброго дня, может кто сталкивался, уже долго не могу понять, почему на подключенный сервер через postgres_fdw не отправляются предикаты по jsonb полям? функции все иммутабельные.
Отправлялся exist на hstore в постгрес 9.6, после переезда  на 12.3 и он перестал отправляться. В случае hstore, в настройках удаленного сервера exstensions указано, что hstore на нем есть.
А как тут связаны jsonb и hstore?
И Вы 100% убедились, что никогда не отправляются (может, просто оценки такие, что планировщик считает, что не стоит)?
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Igor 🐈 Cuba
Сап. Какое хранилище лучше выбрать для хранения лишь одной сущности? Если выберать рсубд — так это одна таблица будет, ради одной таблицы разворачивать мускул или постгру имхо не лучший выбор. CSV-файл — ну хз, как его ротировать потом, может подводные свои есть.
Сам сервис представляет собой веб-аппликуху с единственным эндпоинтом. Записей планируется хранить где-то до 100К. На чтение/запись должна быть относительно быстрой, но и в то же время тащить какое-то супир-модное и тяжёлое в развёртывании/управлении асинхронное хранилище не хочу.
sqlite, может? А вообще да, это offtopic. ;)
источник

IC

Igor 🐈 Cuba in pgsql – PostgreSQL
Yaroslav Schekin
sqlite, может? А вообще да, это offtopic. ;)
ну я скулайт всегда воспринимал просто как "портативную" базу данных для всяких мобильных решений или роутерос какой-нибудь, да и хз как она работает с >1000 записей
там индексы на строки вообще поддерживаются?
источник

N

Nick in pgsql – PostgreSQL
SqLite, да
источник

JD

Jim Di in pgsql – PostgreSQL
индексы есть, с десятком тысяч записей справлялась
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Igor 🐈 Cuba
ну я скулайт всегда воспринимал просто как "портативную" базу данных для всяких мобильных решений или роутерос какой-нибудь, да и хз как она работает с >1000 записей
там индексы на строки вообще поддерживаются?
Сейчас уже не 1980-ые, и работать с "1000 записей" сейчас может всё, что угодно. ;)
Я не думаю, что сотни гигабайт будут представлять для sqlite какие-то проблемы. И обычные (b-tree) индексы там есть, разумеется.
источник

KK

Konstantin Knizhnik in pgsql – PostgreSQL
Andrey Kovtun
доброго дня, может кто сталкивался, уже долго не могу понять, почему на подключенный сервер через postgres_fdw не отправляются предикаты по jsonb полям? функции все иммутабельные.
Отправлялся exist на hstore в постгрес 9.6, после переезда  на 12.3 и он перестал отправляться. В случае hstore, в настройках удаленного сервера exstensions указано, что hstore на нем есть.
Функции ваши? Из extension-а?
источник

AK

Andrey Kovtun in pgsql – PostgreSQL
Yaroslav Schekin
А как тут связаны jsonb и hstore?
И Вы 100% убедились, что никогда не отправляются (может, просто оценки такие, что планировщик считает, что не стоит)?
они связаны лишь тем, что предикат не отправляется в обоих случаях, не более. Про hstore, просто расписал, что одна иммутабельная функция отправлялась..

на всякий случай проверил еще раз, какие запросы отправляются на удаленный сервер при планировании (use_remote_estimate включен) отправляется только один запрос без предиката..
источник

AK

Andrey Kovtun in pgsql – PostgreSQL
Konstantin Knizhnik
Функции ваши? Из extension-а?
нет, все встроенное для jsonb, в случае hstore - из extension hstore.
источник

KK

Konstantin Knizhnik in pgsql – PostgreSQL
Просто .postgres_fdw умеет pushdownить предикаты с иммутабельными функциями только если лни встроенные или принадлежат shippable extension-у - перечисленному в списке extension.ов для данного fdw сервера
источник

KK

Konstantin Knizhnik in pgsql – PostgreSQL
F.34.1.4. Remote Execution Options

By default, only WHERE clauses using built-in operators and functions will be considered for execution on the remote server. Clauses involving non-built-in functions are checked locally after rows are fetched. If such functions are available on the remote server and can be relied on to produce the same results as they do locally, performance can be improved by sending such WHERE clauses for remote execution. This behavior can be controlled using the following option:

extensions

   This option is a comma-separated list of names of PostgreSQL extensions that are installed, in compatible versions, on both the local and remote servers. Functions and operators that are immutable and belong to a listed extension will be considered shippable to the remote server. This option can only be specified for foreign servers, not per-table.

   When using the extensions option, it is the user's responsibility that the listed extensions exist and behave identically on both the local and remote servers. Otherwise, remote queries may fail or behave unexpectedly.
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Andrey Kovtun
они связаны лишь тем, что предикат не отправляется в обоих случаях, не более. Про hstore, просто расписал, что одна иммутабельная функция отправлялась..

на всякий случай проверил еще раз, какие запросы отправляются на удаленный сервер при планировании (use_remote_estimate включен) отправляется только один запрос без предиката..
Т.е. hstore здесь ни при чём, строго говоря...
Ну а пример запроса с таким предикатом есть?
источник

AK

Andrey Kovtun in pgsql – PostgreSQL
Konstantin Knizhnik
F.34.1.4. Remote Execution Options

By default, only WHERE clauses using built-in operators and functions will be considered for execution on the remote server. Clauses involving non-built-in functions are checked locally after rows are fetched. If such functions are available on the remote server and can be relied on to produce the same results as they do locally, performance can be improved by sending such WHERE clauses for remote execution. This behavior can be controlled using the following option:

extensions

   This option is a comma-separated list of names of PostgreSQL extensions that are installed, in compatible versions, on both the local and remote servers. Functions and operators that are immutable and belong to a listed extension will be considered shippable to the remote server. This option can only be specified for foreign servers, not per-table.

   When using the extensions option, it is the user's responsibility that the listed extensions exist and behave identically on both the local and remote servers. Otherwise, remote queries may fail or behave unexpectedly.
да, это я читал, я говорю именно о встроенных функциях. Например,  функция jsonb_exists.
источник

AK

Andrey Kovtun in pgsql – PostgreSQL
Yaroslav Schekin
Т.е. hstore здесь ни при чём, строго говоря...
Ну а пример запроса с таким предикатом есть?
строго говоря, да) пытался дать больше информации и контекста, вышло нездорово)

например,
explain verbose select * from private."3602" where jsonb_exists(jsonb_field ,'{house, build_year}');


на удаленном сервере в логе

EXPLAIN SELECT <тут все поля> FROM public.table_name

прошу прощения, но приходится убирать часть вывода, типа названий полей((
источник

KK

Konstantin Knizhnik in pgsql – PostgreSQL
Andrey Kovtun
да, это я читал, я говорю именно о встроенных функциях. Например,  функция jsonb_exists.
У меня jsonb_exists прекрасно пушится:
postgres=# explain select * from fjt where jsonb_exists(content, 'some');
                         QUERY PLAN                          
--------------------------------------------------------------
Foreign Scan on fjt  (cost=100.00..157.50 rows=487 width=32)
  Filter: jsonb_exists(content, 'some'::text)
(2 rows)
источник