@pgsql

Страница 1025 из 1062
Amir
08.10.2018
11:36:45
причуды заказчика я не погружался, просто спрашивают можно ли или нет

Yaroslav
08.10.2018
11:42:58
причуды заказчика я не погружался, просто спрашивают можно ли или нет
А заказчики в курсе, что всё, что гарантирует sequence — это неповторяющиеся значения, и не более того? Т.е. после параллельной работы разных клиентов получившаяся в таблице последовательность значений (в порядке "реального" времени), вполне может быть: 1, 4, 2, 35, 28, 29, 30, ... и это нормально.

Вася
08.10.2018
11:47:48
Всем привет, подскажите, делал кто полный бэкап через wal-g? Вопрос в чем, как лучше реализовать чтобы wal-g отрабатывал только на одной ноде, а не на всех

Azat
08.10.2018
11:53:49
Ребят кто работал с ssl_mode=on. Если сертификат продлить - замена файла на сервере достаточно или надо будет сделать sign-up ? Спасибо

Google
Azat
08.10.2018
11:59:00
Походу нет, у меня такое ощущение что postmaster эти сертификаты загружает в себя

Bogdan
08.10.2018
12:02:34
Ребят кто работал с ssl_mode=on. Если сертификат продлить - замена файла на сервере достаточно или надо будет сделать sign-up ? Спасибо
Ну надо либо конфиг релоуднуть, либо вобще рестартнуть сервер Но это не точно, я еще ссл не конфигурил

Azat
08.10.2018
12:03:08
Почитал сейчас пишут что рестарт нужен

Релоад не помогает

Bogdan
08.10.2018
12:43:03
Почитал сейчас пишут что рестарт нужен
Жалко, как-раз думал использовать бесплатные сертификаты от летскрипт, а их надо раз в 3 месяца обновлять

Bogdan
08.10.2018
12:48:38
используй скрипт для этого
Рестартить плохо, под продакшеном)

F
08.10.2018
12:49:24
Bogdan
08.10.2018
12:50:13
reload config делай
Говорят, не помогло https://t.me/pgsql/102410

vlade11115
08.10.2018
13:02:15
Есть два поля с типом timestamp with time zone. start_time и end_time соответственно. Как можно выбрать только те записи, у которых нет пересечения по датам? Например запись start_time = 2018-10-09 07:45, end_time = 2018-10-09 20:00 и вторая запись start_time = 2018-10-09 08:00 и end_time = 2018-10-09 20:00 Полную запись опустил для краткости. Нужно выбрать только одну из них. Можно любую. Нагуглил OVERLAPS но не понимаю как его в запрос вписать. PG 10 если это существенно.

vlade11115
08.10.2018
13:06:39
Потому что это не диапазон а конкретная дата.

Bogdan
08.10.2018
13:07:02
как-же не диапазон, есть начало и конец

Google
Mike Chuguniy
08.10.2018
13:07:52
Говорят, не помогло https://t.me/pgsql/102410
user=# select name,setting,context from pg_settings where name like '%ssl%'; name | setting | context ---------------------------+----------------------------------------+--------- ssl | on | sighup ssl_ca_file | | sighup ssl_cert_file | /etc/ssl/certs/ssl-cert-snakeoil.pem | sighup ssl_ciphers | HIGH:MEDIUM:+3DES:!aNULL | sighup ssl_crl_file | | sighup ssl_dh_params_file | | sighup ssl_ecdh_curve | prime256v1 | sighup ssl_key_file | /etc/ssl/private/ssl-cert-snakeoil.key | sighup ssl_prefer_server_ciphers | on | sighup (9 строк) user=# Открываем доку: https://postgrespro.ru/docs/postgresql/10/view-pg-settings , читаем: sighup Внесённые в postgresql.conf изменения этих параметров можно применить, не перезапуская сервер. Если передать управляющему процессу сигнал SIGHUP, он перечитает postgresql.conf и применит изменения. Управляющий процесс также перешлёт сигнал SIGHUP всем своим дочерним процессам, чтобы они тоже приняли новое значение. Странный релоад, смотреть, как он реализован.

vlade11115
08.10.2018
13:08:51
как-же не диапазон, есть начало и конец
Хмм. Спасибо, посмотрю в эту сторону. Если взять что-то из этих типов то можно будет выбрать без пересечений?

Bogdan
08.10.2018
13:10:32
Хмм. Спасибо, посмотрю в эту сторону. Если взять что-то из этих типов то можно будет выбрать без пересечений?
честно говоря я с ними пока не работал, но в тоерии они для таких задач спроектированы вот перечень операторов https://www.postgresql.org/docs/9.3/static/functions-range.html#RANGE-OPERATORS-TABLE

&& overlap (have points in common) int8range(3,7) && int8range(4,12) t

vlade11115
08.10.2018
13:13:15
У меня две записи зависят друг от друга как я вижу. Если пересекаются то выбирать только одну.

Yaroslav
08.10.2018
13:17:25
Есть два поля с типом timestamp with time zone. start_time и end_time соответственно. Как можно выбрать только те записи, у которых нет пересечения по датам? Например запись start_time = 2018-10-09 07:45, end_time = 2018-10-09 20:00 и вторая запись start_time = 2018-10-09 08:00 и end_time = 2018-10-09 20:00 Полную запись опустил для краткости. Нужно выбрать только одну из них. Можно любую. Нагуглил OVERLAPS но не понимаю как его в запрос вписать. PG 10 если это существенно.
Хмм... > Как можно выбрать только те записи, у которых нет пересечения по датам? и: > Например запись start_time = 2018-10-09 07:45, end_time = 2018-10-09 20:00 > и вторая запись start_time = 2018-10-09 08:00 и end_time = 2018-10-09 20:00 > Нужно выбрать только одну из них. Можно любую. Так пересекающиеся или не пересекающиеся? И еще: по всей таблице, без всяких других детализаций?

vlade11115
08.10.2018
13:21:03
Хмм... > Как можно выбрать только те записи, у которых нет пересечения по датам? и: > Например запись start_time = 2018-10-09 07:45, end_time = 2018-10-09 20:00 > и вторая запись start_time = 2018-10-09 08:00 и end_time = 2018-10-09 20:00 > Нужно выбрать только одну из них. Можно любую. Так пересекающиеся или не пересекающиеся? И еще: по всей таблице, без всяких других детализаций?
> Как можно выбрать только те записи, у которых нет пересечения по датам? Не знаю, если нельзя то пусть так. Так пересекающиеся или не пересекающиеся? Записи пересекаются, нужно одну любую. И еще: по всей таблице, без всяких других детализаций? Там ещё и другие условия, по типу "выбрать за неделю" и "выбрать записи у которых start_time больше равно текущей дате", но это существенно? Могу показаь запрос что сейчас есть, но там нет части с пересечениями.

vlade11115
08.10.2018
13:25:24
[1, 3] и [5, 9]

Или [2, 6], [5, 9], разницы нет.

Bogdan
08.10.2018
13:27:08
странно как-то [2,6] пресекается и с первой и с последней

vlade11115
08.10.2018
13:27:39
Точно, ой.

[1, 3] и [5, 9]
Вот так.

Bogdan
08.10.2018
13:29:06
а обьем базы, временыне рамки на запрос? Можно просто на ренджи сделать gin индекс и потом в лоб првоерять для каждой записи, енет ли пересечений через &&

Yaroslav
08.10.2018
13:30:47
Вот так.
А почему именно так? В чём принцип?

Alexey
08.10.2018
13:39:13
[1, 3] и [5, 9]
а почему не [2, 6]?

vlade11115
08.10.2018
13:41:38
а почему не [2, 6]?
Можно и [2, 6] и [5, 9]

Google
Alexey
08.10.2018
13:43:28
Напришивается простое решение с with-ом рекурсивное. В качестве первого взять любой

Yaroslav
08.10.2018
13:49:16
vlade11115
08.10.2018
13:50:40
Можно и [2, 6] и [5, 9]
Блин, нельзя такое.

Спасибо за ответы, решил обходным манёвром не через выборку.

Oleg
08.10.2018
14:37:33
Привет. https://dpaste.de/hEnj в мониторинге был триггер, на процессы которые в резалтсете select * from pg_stat_activity where wait_event IS NOT NULL ; вот такие процессы там - это нормальные процессы для 10 версии?

Oleg
08.10.2018
14:52:41
да, я это читал и я так понял что у меня всё хорошо, это норма.jpg. или эти ожидания не должны быть долгими?

Fike
08.10.2018
14:54:24
Жалко, как-раз думал использовать бесплатные сертификаты от летскрипт, а их надо раз в 3 месяца обновлять
LE в общем-то строго для веба (несмотря на то, что эти сертификаты можно где угодно использоваться). Но серт вы и сами себе можете сгенерить с произвольной длительностью.

Bogdan
08.10.2018
14:55:51
LE в общем-то строго для веба (несмотря на то, что эти сертификаты можно где угодно использоваться). Но серт вы и сами себе можете сгенерить с произвольной длительностью.
вот только прийдеться потом на каждой клитской машине настраивать Certification Authority или в натсройках конекшена перепредлять его И таскать файл сертфикатов на клиенты

Fike
08.10.2018
14:56:46
Для меня это не выглядит большой проблемой, учитывя вообще что происходят внутрях любой большой компании вы, возможно, захотите держать свой CA.

Bogdan
08.10.2018
14:57:21
я был очень приятно удивлен что в Azure постгре диет с ВАЛИДНЫМ сертификатом, и клиенты сразху подключаются, без вопросов, в GCE у сервера вобще нет DNS имени, только айпи, и самоподписный серт скачать можно с сервера а AWS не помню, как дела с этим, но сертификат точно не "натсоящий" за-то в ажуре все тормозит изза медленного диска

Bogdan
08.10.2018
14:58:57
Для меня это не выглядит большой проблемой, учитывя вообще что происходят внутрях любой большой компании вы, возможно, захотите держать свой CA.
да. большие космпании любят на спичках эконосить когда-то работал в одной такой, корпортаивный VPN с самоподписаным секртификатом конектишься издому, тебе говрят "А вы доверяете этому серверу" ? И что , я буду срвнивать фингерптринт? Какое поле деятельности для MiM атаки ))

но вообще я сейчас на сатратпах работаю, так-что о корпоративной инфраструктуре только мечатать :_)

Fike
08.10.2018
15:03:18
Нет, ты установишь себе сертификат CA и больше не будешь иметь таких проблем. Я бы не назвал это экономией.

Bogdan
08.10.2018
15:06:56
Нет, ты установишь себе сертификат CA и больше не будешь иметь таких проблем. Я бы не назвал это экономией.
А если я с разных машин подключаюсь к корпортаивной сети, и не всегдадаже мею админские права, или забыл дома флешку с сертфикатом?) Конкретно с VPN это было весьма глупо Кстати говоря, уже бзавелись полноценным сертификатом, правда я там уже не работаю давно

Нет, ты установишь себе сертификат CA и больше не будешь иметь таких проблем. Я бы не назвал это экономией.
В чем загвоздка я задумался об этом, но не настолько ответсмвенывнй работник, чтоыб париться над установкой сертификата а 80% работников, даже думать не будут, просто нажмут "ОК, запомнить сертификат"

с базой это действительно не так критично, так как к ней конектится только прочка пликейшенов, и девелоперы/адины, можно и прописать стертификат один раз)

Anton
08.10.2018
15:58:48
Есть ли возможность при связывании двух таблиц с отношением 1 ко М поставить ограничение на 1 запись, типо limit в JOIN?

Чтобы не M строк получилось, а 1

Google
Сергей
08.10.2018
16:00:44
Group by id

Anton
08.10.2018
16:01:24
А можно полный пример запроса?

Yaroslav
08.10.2018
16:02:32
А можно полный пример запроса?
А какую одну запись из M? По какому принципу?

Anton
08.10.2018
16:03:10
По id норм будет. Id - счетчик

Admin
ERROR: S client not available

elfiki
08.10.2018
16:03:38
можно через distinct

Anton
08.10.2018
16:04:09
Я какие то четырех этажные сочиняю конструкции. Хотелось бы умных людей послушать и изящный запрос

:)

elfiki
08.10.2018
16:04:46
можно вторую таблицу не целиком джойнить, а предварительно дистинкт по ней, а можно и результат всего джойна, но вообще подробности нужны

Anton
08.10.2018
16:05:10
Ну самое простое

Есть персона и может иметь много адресов

Надо взять последний адрес

Yaroslav
08.10.2018
16:05:53
Надо взять последний адрес
Что такое "последний"?

Anton
08.10.2018
16:06:07
Max(id)

Пока с пост обработкой результата join сочиняется

Может я просто не знаю чего-то особенного и можно проще

Yaroslav
08.10.2018
16:09:00
Max(id)
FROM person LEFT JOIN LATERAL (SELECT ... FROM person_addresses AS pa WHERE pa.person_id = person.id ORDER BY pa.id DESC LIMIT 1) AS only_one_m ON true

Anton
08.10.2018
16:31:25
А если упустить lateral, что произойдет?

Alexey
08.10.2018
16:34:20
По всей видимости ошибка, так как запрос, который join-ится, ничего о person таблице не знает.

Anton
08.10.2018
17:36:22
Google
elfiki
08.10.2018
17:37:26
а там нужен иннер или лефт?

Yaroslav
08.10.2018
17:39:31
медленный запрос оказался. не смогу применить
Покажите \d таблиц, запрос и план (EXPLAIN (ANALYZE, BUFFERS)).

Terminator
08.10.2018
17:59:28
Alina Glumenko будет жить. Поприветствуем!

Anton
08.10.2018
18:04:27
Покажите \d таблиц, запрос и план (EXPLAIN (ANALYZE, BUFFERS)).
сюда прям результат вставить можно?

Yaroslav
08.10.2018
18:04:54
сюда прям результат вставить можно?
Можете на какой-нибудь paste site, а сюда ссылку.

Anton
08.10.2018
18:07:02
https://pastebin.com/v4j2sC2c

Yaroslav
08.10.2018
18:08:37
Anton
08.10.2018
18:18:08
таблицы без индексов по полю person_id: "potok_student_person_id_fkey" FOREIGN KEY (person_id) REFERENCES potok_persona(id) ON DELETE SET NULL "kladr_adr_person_id_fkey" FOREIGN KEY (person_id) REFERENCES potok_persona(id) ON DELETE SET NULL

Yaroslav
08.10.2018
18:21:05
таблицы без индексов по полю person_id: "potok_student_person_id_fkey" FOREIGN KEY (person_id) REFERENCES potok_persona(id) ON DELETE SET NULL "kladr_adr_person_id_fkey" FOREIGN KEY (person_id) REFERENCES potok_persona(id) ON DELETE SET NULL
Так вот в том и проблема, что без индексов. Вы так хотите и оставить (тогда Вам лучше попробовать запрос на основе DISTINCT ON), или всё же можете добавить индекс? CREATE INDEX ON kladr_adr(person_id, id);

Anton
08.10.2018
18:24:47
а как будет выглядеть запрос с distinct on?

добавил индекс - теперь все хорошо с запросом

но быстрый вариант (из медленных запросов) без индекса тоже хотелось бы найти

Yaroslav
08.10.2018
18:33:48
а как будет выглядеть запрос с distinct on?
Что-то вроде (вообще не проверял): SELECT st.id, only_one_m.id FROM potok_student AS st LEFT JOIN ( SELECT DISTINCT ON (person_id) person_id, id FROM kladr_adr ORDER BY person_id, id DESC; ) AS only_one_m ON st.person_id = only_one_m.person_id;

но быстрый вариант (из медленных запросов) без индекса тоже хотелось бы найти
Ну так "основных" два: LATERAL JOIN и DISTINCT ON. Почти во всех ситуациях они (какой-то из них) наиболее производительны.

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