@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 не помню, как дела с этим, но сертификат точно не "натсоящий" за-то в ажуре все тормозит изза медленного диска

Для меня это не выглядит большой проблемой, учитывя вообще что происходят внутрях любой большой компании вы, возможно, захотите держать свой 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 - счетчик

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
elfiki
08.10.2018
17:37:26
а там нужен иннер или лефт?

Google
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