Size: a a a

pgsql – PostgreSQL

2021 February 18

Д

Дмитрий in pgsql – PostgreSQL
Спасибо за совет.
источник

KZ

Konstantin Zaitsev in pgsql – PostgreSQL
Roux
Добрый вечер) Такая задачка у меня, мозг кипит просто😅
1. Есть у нас бизнес, у него много кастомеров, получаем их для нужного бизнеса так, к примеру:
::Customer.where(business_id: object.id)
2. У каждого кастомера есть свои аттачменты.
3. У каждого аттачмента есть поле attachment_type.

Мне нужно просто получить количество всех аттачментов для данного бизнеса(attachment_type: "business").

По факту, нужно получить всех кастомеров данного бизнеса(это есть, п1) и из каждого извлечь все аттачменты у которых тип "business", ну и подсчитать)
То есть все просто, но все упирается в мои знания😅

Подскажите пожалуйста, как правильно написать такой SQL запрос?
ORM не перевести в такой постановке в SQL, я даже по-русски понять не могу
источник

W

Warstone in pgsql – PostgreSQL
Roux
Добрый вечер) Такая задачка у меня, мозг кипит просто😅
1. Есть у нас бизнес, у него много кастомеров, получаем их для нужного бизнеса так, к примеру:
::Customer.where(business_id: object.id)
2. У каждого кастомера есть свои аттачменты.
3. У каждого аттачмента есть поле attachment_type.

Мне нужно просто получить количество всех аттачментов для данного бизнеса(attachment_type: "business").

По факту, нужно получить всех кастомеров данного бизнеса(это есть, п1) и из каждого извлечь все аттачменты у которых тип "business", ну и подсчитать)
То есть все просто, но все упирается в мои знания😅

Подскажите пожалуйста, как правильно написать такой SQL запрос?
Выбираешь из таблицы бизнесов конкретный, лефт джойнишь туда кастомеров, потом к кастомерам лефт джойнишь аттачменты и дальше со всего этого считаешь каунт. Если надо по всем пизнесам, то бизнес втыкаешь в группировку. 3й класс ЦПШ.
источник

МШ

Михаил Шурутов... in pgsql – PostgreSQL
Дмитрий
Здравствуйте. Сильно за вопрос не пинайте. Подскажите пожалуйста, где можно найти литературу по postgresql для новичка, который только сегодня узнал что это такое?
источник

AL

Alexey Lesovsky in pgsql – PostgreSQL
Дмитрий
Здравствуйте. Сильно за вопрос не пинайте. Подскажите пожалуйста, где можно найти литературу по postgresql для новичка, который только сегодня узнал что это такое?
Salahaldin Juba, Andrey Volkov | Learning PostgreSQL
смотрите только издание посвежее, есть и на русском.
источник

AL

Alexey Lesovsky in pgsql – PostgreSQL
Troubleshoot
Привет, пытаюсь поднять pgbouncer в докере.

pgbouncer % docker run --rm \
   -e DATABASE_URL="postgres://user:password@my_remote_db_host/db_name" \
   -p 5432:5432 \
   -v ./pgbouncer.ini:/etc/pgbouncer/pgbouncer.ini:ro \
   edoburu/pgbouncer

Получаю
pooler error: password authentication failed

pgbouncer.ini

[databases]
* = host=my_remote_db_host port=5432 dbname=db_name password=password

[pgbouncer]
listen_addr = *
listen_port = 5432
auth_type = md5
auth_file = ./userlist.txt
pool_mode = session
max_client_conn = 1300
default_pool_size = 20
ignore_startup_parameters = extra_float_digits
server_tls_sslmode = disable



userlist.txt
"user" "md53f84a3c26198d9b94054ca7a3839366d"


Я в отчаянии, помогите плиз у кого была такая проблема.
вы в докерной команде, через -v прокидываете только один кофиг (pgbouncer.ini), полагаю что надо и userlist.txt тоже прокинуть.

можно вообще каталог сразу пробрасывать, если файлов много
источник

AL

Alexey Lesovsky in pgsql – PostgreSQL
Иван Ратников
У меня вот такая страшная картина
проц у вас используется запросами в БД, это нормально - запросы не могут выполняться бесплатно.
Судя по процессам у вас там параллельные воркеры, при этом всего 4 ядра в системе, поэтому посмотрите на настройки параллелизма и подкрутите в соответствии с числом ядер (или вообще выключите).

см. тут https://www.postgresql.org/docs/current/runtime-config-resource.html#RUNTIME-CONFIG-RESOURCE-ASYNC-BEHAVIOR
- max_worker_processes
- max_parallel_workers
- max_parallel_workers_per_gather
источник

AL

Alexey Lesovsky in pgsql – PostgreSQL
обратите внимание, для каждого из 2-х процессов, запущено по два воркера - в зависимости от "тяжести" запроса они потребляют процессорные ресуры.

в перспективе надо посмотреть на запросы (pg_stat_statemnts), выявить самые прожорливые и заняться их оптимизацией - тогда можно снизить общее потребление ресурсов (в т.ч. и cpu) постгресом.
источник

AL

Alexey Lesovsky in pgsql – PostgreSQL
Nurlan
Доброй ночи, где сдавать на  сертификат postgres лигитимный по миру? Это ехать в сэшэпэ?
такого нет, но различные компании которые зарабатывают на постгресе, предоставляют такую возможность, например из зарубежных EDB, из российских - PostgresPro. Также есть различные компании (российские в т.ч.) у которых просто есть курсы по постгресу с выдачей сертификата в конце (названий не вспомню, гугл в помощь)
источник

AT

Andrey Tatarnikov in pgsql – PostgreSQL
Коллеги, привет, подскажите, плз, давеча несколько запросов погибло по "could not write to hash-join temporary file: No space left on device", под субд отдано чуть больше 1Тб, таблицы+индексы занимают стабильно ~700Гб.
Субд - часть SaaS коробки, консоли в нее нет, есть только sql.
Можно ли как-то на sql оценить размер временных файлов?
источник

AT

Andrey Tatarnikov in pgsql – PostgreSQL
Попробовал смотреть в pg_stat_database, temp_bytes про базу указан в 228Тб, что выглядит как-то очень странно
источник

AN

Alexander Nikitin in pgsql – PostgreSQL
это объём сгенерированный с момента сброса статистики
источник

AN

Alexander Nikitin in pgsql – PostgreSQL
возможно, вам стоит пересмотреть размер work_mem
источник

AN

Alexander Nikitin in pgsql – PostgreSQL
разве он ограничивает? Я всегда считал, что при достижении указанного размера данные о нём попадают в лог-файл.
источник

AT

Andrey Tatarnikov in pgsql – PostgreSQL
<pg_settings name="work_mem" setting="993524" source="configuration file" unit="kB"/>
источник

AT

Andrey Tatarnikov in pgsql – PostgreSQL
log_temp_files включены (значение 0), но покуда доступа к субд нет, надо просить вендора доставать логи и что-то думать, хотелось бы как-то оценить - это они или может быть что-то еще
источник

АП

Александр Попов... in pgsql – PostgreSQL
Alexander Nikitin
разве он ограничивает? Я всегда считал, что при достижении указанного размера данные о нём попадают в лог-файл.
Да, ошибся.  temp_file_limit задаёт максимальный объём дискового пространства, который сможет использовать один процесс для временных файлов при сортировке и хешировании. Транзакция, которая попытается превысить этот предел, будет отменена.
источник

AT

Andrey Tatarnikov in pgsql – PostgreSQL
а temp_file_limit вообще -1, то есть лимита и нету
источник

AT

Andrey Tatarnikov in pgsql – PostgreSQL
да и документация говорит, что этот лимит не применяется к временным файлам, только к файлам временных таблиц
источник

AK

Alexandr Kuvaev in pgsql – PostgreSQL
Ребят, всем привет!
У меня такой вопрос, есть N таблиц, имеющие разные поля.
Есть ли хитрый индекс, который позволит объединить запросы/сделать возможным не делать запрос в каждую таблицу отдельно?
источник