Size: a a a

pgsql – PostgreSQL

2021 January 13

RL

Roman Lukianov in pgsql – PostgreSQL
ну да, если b."Module_Num" строка, то получите не то, что ожидаете
источник

p

porsh59 in pgsql – PostgreSQL
Yaroslav Schekin
Или "ORDER BY CAST(MAX(b."Module_Num") AS integer)".
И Ваш работает, тоже спасибо!
источник

p

porsh59 in pgsql – PostgreSQL
Livegeny
я к чему: max для какого типа ищется?
Вообще этим Max я решал задачу, чтоб у меня только одна строка добавлялась, я просто знаю, что они одинаковые и среди одинаковых выберется например первый, меня устраивает. Тип Text, но там числа. Я применил Max т.к. это единственное, что мне пришло в голову. Если подскажите как через Join добавлять только одну строку из второй таблицы из множества строк удовлетворяющих условию, например первую, буду Вам благодарен.
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
porsh59
Вообще этим Max я решал задачу, чтоб у меня только одна строка добавлялась, я просто знаю, что они одинаковые и среди одинаковых выберется например первый, меня устраивает. Тип Text, но там числа. Я применил Max т.к. это единственное, что мне пришло в голову. Если подскажите как через Join добавлять только одну строку из второй таблицы из множества строк удовлетворяющих условию, например первую, буду Вам благодарен.
> Тип Text, но там числа.

Что ж так-то? ;)

> Я применил Max т.к. это единственное, что мне пришло в голову.

Обычно как-то так и делают, да.

> например первую

В таблицах (relations) реляционных СУБД не бывает "первых" строк.
Т.е. так, как Вы написали — вполне вариант. Если же нужно несколько полей из внешней таблицы, есть ещё вариант с LATERAL, что-то вроде:
SELECT a.id, a."Name", b.field1, b.field2
 FROM project."Power" AS a
 LEFT JOIN LATERAL (
      SELECT p.field1, p.field2
        FROM project."View_All_BD" AS p
       WHERE a."Device_dest" = b."XM_Name"
       ORDER BY p.field3
       LIMIT 1
      ) AS b
   ON true
ORDER BY b.field2
источник

p

porsh59 in pgsql – PostgreSQL
Yaroslav Schekin
> Тип Text, но там числа.

Что ж так-то? ;)

> Я применил Max т.к. это единственное, что мне пришло в голову.

Обычно как-то так и делают, да.

> например первую

В таблицах (relations) реляционных СУБД не бывает "первых" строк.
Т.е. так, как Вы написали — вполне вариант. Если же нужно несколько полей из внешней таблицы, есть ещё вариант с LATERAL, что-то вроде:
SELECT a.id, a."Name", b.field1, b.field2
 FROM project."Power" AS a
 LEFT JOIN LATERAL (
      SELECT p.field1, p.field2
        FROM project."View_All_BD" AS p
       WHERE a."Device_dest" = b."XM_Name"
       ORDER BY p.field3
       LIMIT 1
      ) AS b
   ON true
ORDER BY b.field2
Почитал, про LATERAL, в принципе его ипользовать правильнее, пробую, но он почемуто не знает LATERAL ?
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
porsh59
Почитал, про LATERAL, в принципе его ипользовать правильнее, пробую, но он почемуто не знает LATERAL ?
Хмм... кто "он"? И что такое "не знает"?
Вы примеры из документации пробовали?
источник

МС

Михаил Серебряков... in pgsql – PostgreSQL
Всем привет! Подскажите пожалуйста как такое можно решить:

Найти id пользователей, кто использовали более 70% карточного лимита. Таблица состоит из двух строк (ID, и сумма лимита)?
источник

РЖ

Роман Жарков... in pgsql – PostgreSQL
Михаил Серебряков
Всем привет! Подскажите пожалуйста как такое можно решить:

Найти id пользователей, кто использовали более 70% карточного лимита. Таблица состоит из двух строк (ID, и сумма лимита)?
Для того, что бы сравнить два числа, надо иметь два числа. А у вас только одно.
источник

МС

Михаил Серебряков... in pgsql – PostgreSQL
Роман Жарков
Для того, что бы сравнить два числа, надо иметь два числа. А у вас только одно.
Понял, спасибо! Кажется понял что не учёл
источник

p

porsh59 in pgsql – PostgreSQL
Yaroslav Schekin
Хмм... кто "он"? И что такое "не знает"?
Вы примеры из документации пробовали?
)))))))), LATERAL, поставил после JOIN , сработало
Конструкция чуть сложнее, но есть чёткий Limit 1, я так понимаю, работать должно быстрее.
Хотя пока для меня скорость не играет роли ))))
>Text выбрал, т.к. там может оказаться и текст, например "1a", как будет проходить сортировка в этом случае пока.... рушу когда придётся )))))
решил перейти на БД, тк. связка XLS и VBA уже утомила, особенно в части сортировок и выборок, как оказалось ваши БД именно эти задачи и решают )))))))), вот такой я древний.
А вообще в конечном итоге из сгенерированных таблиц автоматом генерируются чертежи в AUTOCAD.
Ещё раз, Спасибо Вам!
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
porsh59
)))))))), LATERAL, поставил после JOIN , сработало
Конструкция чуть сложнее, но есть чёткий Limit 1, я так понимаю, работать должно быстрее.
Хотя пока для меня скорость не играет роли ))))
>Text выбрал, т.к. там может оказаться и текст, например "1a", как будет проходить сортировка в этом случае пока.... рушу когда придётся )))))
решил перейти на БД, тк. связка XLS и VBA уже утомила, особенно в части сортировок и выборок, как оказалось ваши БД именно эти задачи и решают )))))))), вот такой я древний.
А вообще в конечном итоге из сгенерированных таблиц автоматом генерируются чертежи в AUTOCAD.
Ещё раз, Спасибо Вам!
> LATERAL, поставил после JOIN , сработало

Действительно, я опечатался, извините.

> я так понимаю, работать должно быстрее.

Суть была не в "быстрее", а в том, что когда Вам нужно вытащить какую-то запись внешней таблицы целиком (если из неё нужно несколько полей / все поля), это самый простой способ, кстати.

> Ещё раз, Спасибо Вам!

Да не за что! ;)
источник

ST

Sardorkhuja Tukhtakh... in pgsql – PostgreSQL
С третьим рабочим днем! :)

Читаю сейчас в нескольких статьях о shared_buffers, размер которого рекомендуют выставлять примерно в 25% от ОЗУ. У нас стоит очень маленькое значение (500мб), хочу его поднять, и вот незадача — не могу нагуглить, как:)

Зашел в доку, а там есть строка:
Задать этот параметр можно только при запуске сервера.

Поможет ли изменение конфига shared_buffers в таблице pg_settings?
источник

AN

Alexander Nikitin in pgsql – PostgreSQL
alter system set shared_buffers='500MB';
источник

AN

Alexander Nikitin in pgsql – PostgreSQL
только рестарт потом нужно будет сделать shared_buffers изменяется только после рестарта.
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Sardorkhuja Tukhtakhodjaev
С третьим рабочим днем! :)

Читаю сейчас в нескольких статьях о shared_buffers, размер которого рекомендуют выставлять примерно в 25% от ОЗУ. У нас стоит очень маленькое значение (500мб), хочу его поднять, и вот незадача — не могу нагуглить, как:)

Зашел в доку, а там есть строка:
Задать этот параметр можно только при запуске сервера.

Поможет ли изменение конфига shared_buffers в таблице pg_settings?
> Поможет ли изменение конфига shared_buffers в таблице pg_settings?

Нет. Он в самом деле применяется только при запуске сервера (проще всего в postgresql.conf).

> рекомендуют выставлять примерно в 25% от ОЗУ

Это от нагрузки зависит (больше всего — от соотношения hot read/write set и RAM). Если, например, используемая база может целиком поместиться в RAM, а запросы "простые" (не требуют много work_mem и т.п.) — можно ставить и 75%, и 90% RAM.
источник

ST

Sardorkhuja Tukhtakh... in pgsql – PostgreSQL
Alexander Nikitin
alter system set shared_buffers='500MB';
спасибо!
источник

ST

Sardorkhuja Tukhtakh... in pgsql – PostgreSQL
Yaroslav Schekin
> Поможет ли изменение конфига shared_buffers в таблице pg_settings?

Нет. Он в самом деле применяется только при запуске сервера (проще всего в postgresql.conf).

> рекомендуют выставлять примерно в 25% от ОЗУ

Это от нагрузки зависит (больше всего — от соотношения hot read/write set и RAM). Если, например, используемая база может целиком поместиться в RAM, а запросы "простые" (не требуют много work_mem и т.п.) — можно ставить и 75%, и 90% RAM.
у нас и тяжелые запросы есть, да и на серваке несколько бд (в контейнерах), поэтому думаю, для начала поставить значения, чтобы их сумма была в районе 40% озу сервера
источник

ST

Sardorkhuja Tukhtakh... in pgsql – PostgreSQL
подскажите, а как Вы развивались в сторону бд? Или Вы дата инженеры и это Ваше основное "занятие"?

Думаю, стоит почитать какие-нибудь книги, или по доке тупо пройтись, или и то, и другое)
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Sardorkhuja Tukhtakhodjaev
у нас и тяжелые запросы есть, да и на серваке несколько бд (в контейнерах), поэтому думаю, для начала поставить значения, чтобы их сумма была в районе 40% озу сервера
Да, это сложнее. ;)
Кстати, если уж занялись этим, лучше PostgreSQL и OS полностью сразу настроить, чем по одному параметру подкручивать, IMHO.
См. https://wiki.postgresql.org/wiki/Tuning_Your_PostgreSQL_Server , https://www.postgresql.org/docs/current/kernel-resources.html#LINUX-MEMORY-OVERCOMMIT и https://www.postgresql.org/docs/current/kernel-resources.html#LINUX-HUGE-PAGES
источник

ST

Sardorkhuja Tukhtakh... in pgsql – PostgreSQL
Yaroslav Schekin
Да, это сложнее. ;)
Кстати, если уж занялись этим, лучше PostgreSQL и OS полностью сразу настроить, чем по одному параметру подкручивать, IMHO.
См. https://wiki.postgresql.org/wiki/Tuning_Your_PostgreSQL_Server , https://www.postgresql.org/docs/current/kernel-resources.html#LINUX-MEMORY-OVERCOMMIT и https://www.postgresql.org/docs/current/kernel-resources.html#LINUX-HUGE-PAGES
спасибо!
источник