@pgsql

Страница 991 из 1062
Terminator
19.09.2018
06:10:22
@vkuptcov будет жить. Поприветствуем!

@yanchumak будет жить. Поприветствуем!

Yaroslav
19.09.2018
06:17:24
Google
DiJey (Pavel)
19.09.2018
06:22:50
из под рута если ;)

Yaroslav
19.09.2018
06:23:01
привет всем LOG: could not receive data from client: Connection reset by peer я так понял проблема в каком-то клиенте который не может подключиться, для этого нужно включить log_connection в postgresql.conf, как его применить без рестарта базы?
А когда именно происходит ошибка? В смысле, посреди connection, или при подключении? > для этого нужно включить log_connection в postgresql.conf, log_connections можно включить без restart-а, достаточно сделать reload любым из обычных способов (например, "pg_ctl reload", или "SELECT pg_reload_conf();", ну или просто послать postgres-у SIGHUP).

Yaroslav
19.09.2018
06:25:02
pg_ctl reload у меня что то не подхватывал перенастройку логов, селектом удачно.
А ведь должен. Вы уверены, что он вообще срабатывал?

DiJey (Pavel)
19.09.2018
06:26:22
Уже не помню, но мне БД нельзя было останавливать и было нужно достаточно срочно.

Yaroslav
19.09.2018
06:28:48
Уже не помню, но мне БД нельзя было останавливать и было нужно достаточно срочно.
Всё равно это странно, т.к.: "pg_reload_conf sends a SIGHUP signal to the server, causing configuration files to be reloaded by all server processes." И в исходниках pg_reload_conf это всего лишь: pg_reload_conf(PG_FUNCTION_ARGS) { if (kill(PostmasterPid, SIGHUP)) <обработка ошибки kill> }

DiJey (Pavel)
19.09.2018
06:30:04
Мне нужно было файл лога пересоздать, после релоад он почему то не пересоздавался, видимо думал что еще пишет в тот же.

Сагындык
19.09.2018
06:32:50
А когда именно происходит ошибка? В смысле, посреди connection, или при подключении? > для этого нужно включить log_connection в postgresql.conf, log_connections можно включить без restart-а, достаточно сделать reload любым из обычных способов (например, "pg_ctl reload", или "SELECT pg_reload_conf();", ну или просто послать postgres-у SIGHUP).
Спасибо большое) ошибку пока отследить не удалось, кроме логов, поэтому и хотел спросить как безопаснос включить логи подключений. Скорее всего какой нибудь контейнер не съел пароль от базы

Yaroslav
19.09.2018
06:41:42
DiJey (Pavel)
19.09.2018
06:42:35
Тем не менее пересоздался, менял настройки логирования.

Yaroslav
19.09.2018
06:47:56
Тем не менее пересоздался, менял настройки логирования.
Вы документацию и исходники, которые я цитировал, видели? ;) Т.е., если у Вас "pg_ctl reload" и pg_reload_conf работают не одинаково, то либо не получилось послать сигнал postmaster-у (permissions?), либо Вы сделали "pg_ctl reload" не тому кластеру, например.

X
19.09.2018
08:58:38
Привет! вопросик следующий надо сделать табличку и у строк должен быть родитель, и вложенность может быть любая, первое что пришло в голову это таблица с колонкой родителя, если родитель наивысший - нул, если нет - указываем в колонке айди строки и искать по таблице рекурсивно. Есть ли какие еще идеи по реализации. Спасибо!

Google
Vladimir
19.09.2018
09:01:26
id-parentId типичный вариант, который часто применяется для таких задач. Стоит еще рассмотреть Nested sets и его вариации с прекалькулироваными значениями. В качестве отправной точки https://en.wikipedia.org/wiki/Nested_set_model

Terminator
19.09.2018
09:49:38
@blacky0x0 будет жить. Поприветствуем!

Alexandr
19.09.2018
10:15:02
Привет. Есть таблица Calendar у которой есть ссылки на таблицы Employee и Company(поля соответсвенно называются employeeId и companyId одно из значений всегда null). Как сделать на уровне базы данных, что бы нельзя было создать записи в таблицы календарь где (пример companyId = 2 и employeeId = null 2) существуют 2 раза

Daniil
19.09.2018
10:20:02
то есть где две записи с одинаковыми companyId и employeeId ?

Yaroslav
19.09.2018
10:20:36
elfiki
19.09.2018
10:53:24
пацаны, короче задача есть есть две таблицы связаны многое (табл1) к одному (табл2) вот нужно при инсерте в табл1, если нет данных в табл2, то создавать их, а если есть, то ничего не делать.

кроме триггеров можно как-то по-простому это делать?

Terminator
19.09.2018
10:53:51
@justvit будет жить. Поприветствуем!

Alexandr
19.09.2018
11:01:55
Вопрос только я сделал без этой части UNIQUE (empl_id, company_id))

Это же я так понимаю никак не повлияет?

Yaroslav
19.09.2018
11:02:58
кроме триггеров можно как-то по-простому это делать?
Конечно, нет — либо триггеры, либо вручную. (Да, если кто-то вспомнит про RULES — их очень не советуют, и не без причины.) Кстати, а как это у Вас так получается, что в любой вставке в табл1 есть вся информация для новой записи в табл2? ;)

Это же я так понимаю никак не повлияет?
Да я же вопрос задавал. ;) А почему не просто: CREATE TABLE Calendar(empl_id int UNIQUE, company_id int UNIQUE, CHECK (num_nulls(empl_id, company_id) = 1)); В таком случае? Что тут не так, как Вы хотели?

Yaroslav
19.09.2018
11:08:05
Дефолтные настройки, на самом деле связь у них через третью таблицу
В любом случае, другой "магии" для автоматической вставки у нас, вроде, нет...

Google
elfiki
19.09.2018
11:08:25
Alexandr
19.09.2018
11:09:12
Yaroslav
19.09.2018
11:13:19
CHECK (num_nulls(empl_id, company_id) = 1) не знаю как эту часть реализовать в sequalize в отличие от индексов
Ну а сейчас Вы как реализовываете? Я имею в виду, что сейчас мешает кому-то вставлять дубликаты (без NULL, вроде (1,1) )?

Леонид
19.09.2018
11:14:06
Народ есть вопрос по постгре, никак ничего понять не могу, правильно ли запрос написал. В ней таблица estate_properties с домами, которые имеют номер улицы, название улицы итд. Из всего этого работает full text search который по строке адреса находит несколько нужных домов. Но тут есть другая таблица user_properties, куда юзер загрузил данные и там только колонка, которая содержит полный или нет адрес. Нужно сделать апдейт для каждой колонки в user_properties и вставить туда id из таблицы estate_properties который будет найден по full text search. Пробовал такой вариант и он отрабатывает 30 минут, хотя в таблице user_properties только 81 строка. UPDATE import_user_properties AS iup SET estate_hash = ep.estate_hash FROM estate_properties AS ep WHERE ep.address_fts @@ plainto_tsquery('english', iup.address) AND iup.estate_hash is null AND iup.address is not null AND NOT EXISTS (SELECT 1 FROM import_user_properties WHERE estate_hash = ep.estate_hash);

Может есть какойнить правильный способ апдейтить таблицу из выборки другой таблицы

Yaroslav
19.09.2018
11:16:36
Народ есть вопрос по постгре, никак ничего понять не могу, правильно ли запрос написал. В ней таблица estate_properties с домами, которые имеют номер улицы, название улицы итд. Из всего этого работает full text search который по строке адреса находит несколько нужных домов. Но тут есть другая таблица user_properties, куда юзер загрузил данные и там только колонка, которая содержит полный или нет адрес. Нужно сделать апдейт для каждой колонки в user_properties и вставить туда id из таблицы estate_properties который будет найден по full text search. Пробовал такой вариант и он отрабатывает 30 минут, хотя в таблице user_properties только 81 строка. UPDATE import_user_properties AS iup SET estate_hash = ep.estate_hash FROM estate_properties AS ep WHERE ep.address_fts @@ plainto_tsquery('english', iup.address) AND iup.estate_hash is null AND iup.address is not null AND NOT EXISTS (SELECT 1 FROM import_user_properties WHERE estate_hash = ep.estate_hash);
C виду, Вы сделали CROSS JOIN import_user_properties и estate_properties, так что неудивительно. По крайней мере, я не вижу между ними связи в запросе...

Yaroslav
19.09.2018
11:18:25
объясните плес)
А что тут объяснять? Вы попробуйте аналогичный SELECT, сколько записей получится?

Леонид
19.09.2018
11:20:26
а хотя их и джойнить нечем

Vitaly
19.09.2018
11:26:04
Коллеги, привет. Подскажите, кто-то пробовал перенести tablespace в новую БД ?

Yaroslav
19.09.2018
11:26:21
а хотя их и джойнить нечем
Вот я именно об этом. :) > хотя в таблице user_properties только 81 строка Значит, и аналогичный SELECT должен возвращать не более 81 строки (иначе UPDATE будет работать "как повезёт").

Леонид
19.09.2018
11:28:28
Вот я именно об этом. :) > хотя в таблице user_properties только 81 строка Значит, и аналогичный SELECT должен возвращать не более 81 строки (иначе UPDATE будет работать "как повезёт").
так в том и дело, что эти 81 нечем джойнить) Для каждой из них нужно найти по строке адреса через фтс нужную проперти

Yaroslav
19.09.2018
11:31:03
так в том и дело, что эти 81 нечем джойнить) Для каждой из них нужно найти по строке адреса через фтс нужную проперти
Да всегда есть чем JOIN-ить. ;) Тем не менее, можно использовать что-то вроде: UPDATE import_user_properties SET estate_hash = (подзапрос, возвращающий нужное property).

Terminator
19.09.2018
11:31:43
@select_username будет жить. Поприветствуем!

Google
Леонид
19.09.2018
11:40:15
и умер

там проблема еще, что в таблице estate_properties около 121 млн записей

Yaroslav
19.09.2018
11:45:07
и умер
Что такое "умер"? И, кстати, у Вас там LIMIT без ORDER BY — Вы уверены, что это нормально, т.е. под условия всегда подходит одна запись? > там проблема еще, что в таблице estate_properties около 121 млн записей Ну а индекс есть соотвествующий? Вы план запроса смотрели?

Леонид
19.09.2018
11:50:14
Индексы есть. Сейчас еще раз перепроверю
в таблице уникальный на estate_hash и на фтс в таблице import_user_properties не уникальный на estate_hash и на address

по какой колонке, ато я понять не могу

Yaroslav
19.09.2018
11:51:46
А почему сделать Order by
Это Ваше дело — откуда мне знать, какой порядок Вам нужен? ;)

Леонид
19.09.2018
11:52:01
сек

Yaroslav
19.09.2018
11:53:23
любой)))
То есть Вас устраивает, что, например, каждое выполнение этого запроса будет давать разные результаты? ;) Дело Ваше, конечно...

Леонид
19.09.2018
11:53:50
кстати может дело в postgre сервере, пытаюсь что-то выполнить и он возвращает ошибку

через раз



1 раз выполнит какойнить SELECT а другой уже нет и пишет эту ошибку. Но само приложение, которое работает онлайн сейчас работает стабильно

Google
Леонид
19.09.2018
11:59:05
может это интернет у меня не очень

Vitaly
19.09.2018
12:03:27
А в чём вопрос?
Вопрос — возможно ли это? Насколько трудно? Стандартных утилит для этого нет, насколько я понимаю?

Valery
19.09.2018
12:03:28
Парни, подскажите пожалуйста, при использовании pg_pathman, когда выполняем слияние партиций (merge_range_partitions), будут ли блокировки?

Yaroslav
19.09.2018
12:03:30
Вопрос — возможно ли это? Насколько трудно? Стандартных утилит для этого нет, насколько я понимаю?
Эээ... так разве это работает не наоборот? Т.е. базы (их части) размещаются в tablespace-ах. А Вам это вообще зачем?

Леонид
19.09.2018
12:04:34
Ну а в логах PostgreSQL что-то есть по этому поводу?
сейчас буду смотреть все по порядку

Alexander
19.09.2018
12:09:10
Вопрос — возможно ли это? Насколько трудно? Стандартных утилит для этого нет, насколько я понимаю?
1. Возможно. 2. Не трудно. 3. Нет. Задачу какую решаете? Опишите подробнее. Недавно, кстати, переносил данные из одного кластера в другой, как раз с табличными пространствами, использовал для этого pglogical. Всё переносится, естественно, заранее, нужно накатить структуру баз данных кластера в новом расположении.

Vitaly
19.09.2018
12:12:01
1. Возможно. 2. Не трудно. 3. Нет. Задачу какую решаете? Опишите подробнее. Недавно, кстати, переносил данные из одного кластера в другой, как раз с табличными пространствами, использовал для этого pglogical. Всё переносится, естественно, заранее, нужно накатить структуру баз данных кластера в новом расположении.
задача следующая: есть БД, с которой работают микросервисы. Данные каждого микросервиса лежат в отдельном tablespace. Возникла задача "распилить" единую БД по принципу "один микросервис — одна БД". Как это сделать?

Yukari
19.09.2018
12:14:02
Добавь тс, добавь туда файлы, перенеси данные в новую тс

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