
WoodyFire
29.06.2017
15:23:16
ребят, а возможно на plpgsql вызвать несколько функций в разных потоках, а по завершению их выполнения выполнить требуемые действия?

Anatoliy
29.06.2017
15:26:48
триггеры?

WoodyFire
29.06.2017
15:38:45
триггеры?
почитал руководство. как я понял это не то. я имел ввиду если по простецки, то две очереди, два кассира. После обслуживания 1 покупателя каждым кассиром, охранник на выходе забирает пакеты у обоих покупателей и выдает все это за свою покупку ))))) как-то так.

Anatoliy
29.06.2017
15:39:28
Тогда вам нужна реализация очередей событий, как я понимаю

Google

WoodyFire
29.06.2017
15:51:14
Но..... для одного подключения имеется одна очередь и один поток в котором обрабатываются события из очереди. А мне нужено два потока. В общем вроде я сам нашел ответ на свой вопрос. Процедурный язык - это последовательное выполнение инструкций, а значит 1 обработчик, 1 поток.
может я и не прав. но мои познания такие
надо будет пощупать Си как прикрутить. Время будет руководство почитаю

Darafei
29.06.2017
16:04:05

WoodyFire
29.06.2017
16:04:51

Darafei
29.06.2017
16:05:32
Вообще SQL про "что я хочу получить", а "как" - это решение движка
В 9.6 впилили параллельный скан, а в SQL ничего не поменялось

WoodyFire
29.06.2017
16:08:35
ах, да, извиняюсь. на каждое подключение создается свой процесс. Но ведь в процессе можно создать N-потоков в одном адресном пространстве.
или это средствами plpgsql не возможно?

Anton [Mgn, az09@osm]
29.06.2017
17:32:47

Andrey
29.06.2017
17:38:44
С другой стороны план с параллелизмом чаще всего говорит о плохом запросе.

Google

Dmitry
29.06.2017
18:06:08
спасибо!
правильно понимаю что log_line_prefix = '%t [%p]: [%l-1] db=%d,user=%u,app=%a,client=%h ' тут самое основное для pgbadger?
log_checkpoints = on
log_connections = on
log_disconnections = on
log_lock_waits = on
log_temp_files = 0
log_min_duration_statement = 100
log_autovacuum_min_duration = 0
track_io_timing = on
log_line_prefix = '%t [%p]: [%l-1] db=%d,user=%u,app=%a,client=%h '
shared_preload_libraries = 'pg_stat_statements, auto_explain, pg_buffercache'
pg_stat_statements.max = 10000
pg_stat_statements.track = all
auto_explain.log_min_duration = 1s
auto_explain.log_verbose = on
auto_explain.log_nested_statements = on
auto_explain.log_analyze = off # Use EXPLAIN ANALYZE insted of EXPLAIN
auto_explain.log_buffers = off
auto_explain.log_triggers = off
auto_explain.log_timing = off


WoodyFire
29.06.2017
18:22:01
УРА. Я удовлетворил студента. То есть себя самого. из 3 минут ожидания выборки сократил до менее секунды ))))))
select listb."ID",
listb."firmName",
listb."modelName",
listb."firmNum",
listb."invNum",
listb."localNum",
listb."createDate",
listb."inDate",
listb."tsName",
listb.weight,
listb."workPressure",
listb."ispPressure",
listb.capacity,
listb."lastUpdate",
moveb."ofceName",
moveb.mdate
from (select * FROM "Engineering"."listBall"()) as listb right join
(select l2.idball, "Office"."ofceName", l2.mdate from "Engineering"."listMoveBall"() as l2
left join
"PersonnelDepartment"."Office" using(idofce)) as moveb on listb."ID"=moveb.idball

Anton [Mgn, az09@osm]
29.06.2017
18:23:47
алсо я думал из этих shared_preload_libraries = 'pg_stat_statements, auto_explain, pg_buffercache' первые два занимаются примерно одним и тем же. про третий почитаю
еще раз большое спасибо )


WoodyFire
29.06.2017
18:25:53
вот только засада. не могу понять как правильно построить чтобы выводилось в результате все из listb и не важно есть запись в moveb или нет. Но если запись имеется, то подставить значение в конечный результат. Читал, читал мануал. Чет так и не могу побороть (((( подскажите пожалуйста как это сделать.
в данный момент выводиться записей ровно столько сколько в moveb (((

Anton [Mgn, az09@osm]
29.06.2017
18:27:47

Dmitry
29.06.2017
18:28:51

Anton [Mgn, az09@osm]
29.06.2017
18:32:12


WoodyFire
29.06.2017
18:38:39
всё дело в right join
ну точно )))). я ж впервый раз написал, но результат не крутанул. строк то со значением в moveb мало, а в listb много. увидел пустышки и задумался. )))))))))
огромное Вам спасибо, за то что вы есть. Хоть и возился полдня, но все же из 3,5 минут вышло не более 1,5 сек на 660 строк в конечном результате. при дефолтных настройках сервера.
мой конечный запрос
select listb."ID",
listb."firmName",
listb."modelName",
listb."firmNum",
listb."invNum",
listb."localNum",
listb."createDate",
listb."inDate",
listb."tsName",
listb.weight,
listb."workPressure",
listb."ispPressure",
listb.capacity,
listb."lastUpdate",
moveb."ofceName",
moveb.mdate
from (select * FROM "Engineering"."listBall"()) as listb left join
(select l2.idball, "Office"."ofceName", l2.mdate from "Engineering"."listMoveBall"() as l2
left join
"PersonnelDepartment"."Office" using(idofce)) as moveb on moveb.idball=listb."ID"
с удовольствием почитаю критику кода. студенту это важно.


Anton [Mgn, az09@osm]
29.06.2017
18:45:22
хотя про третий почитал (https://postgrespro.ru/docs/postgresql/9.6/pgbuffercache.html) и думаю что полезно будет оставить

Dmitry
29.06.2017
18:47:29

Anton [Mgn, az09@osm]
29.06.2017
18:48:38
а, ясно, принимается )
мне-то огонь потушить, не до коннектов как бы ))

/dev/null
30.06.2017
01:36:33
Здаров

Google

/dev/null
30.06.2017
01:36:42
age(timestamp, timestamp) interval Вычитает аргументы и выдаёт "символический" результат с годами и месяцами, а не просто днями
А как просто количество дней выдать?

Igor
30.06.2017
01:39:18
SELECT ts2::date - ts1::date

/dev/null
30.06.2017
01:50:04

Igor
30.06.2017
01:50:54
select ts2::date - ts1::date from (select '2016-01-01 00:00:00'::timestamp as ts1, current_timestamp as ts2) x;

Artem
30.06.2017
02:07:21
Коллеги, а никто не пилил мастер-мастер на pglogical?
Конкретно, интересует возможность логической репликации через pgpool

Daniel
30.06.2017
03:41:05
Ребята, после неведомого страха в восстановлении сервера происходит вот такая шняга:
root@scw-7c22e8:/# psql -h /var/run/postgresql
psql: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
Реально ли восстановить сокет без переустановки?
Или выполнить переустановку и сохранить данные?

Denis
30.06.2017
03:42:59
Посмотрите ps aux, работает ли процесс. И загляните в postgresql.conf, в какую директорию он кладёт сокеты

Daniel
30.06.2017
03:47:52

Daniel
30.06.2017
03:48:43
Но сервак после падения, там все монтировалось\перемонтировалось из разделов, где он лежал

Denis
30.06.2017
03:49:22
В процессах не вижу постгреса

Daniel
30.06.2017
03:50:07
И restart 100 раз делал

Igor
30.06.2017
03:50:30
а если руками, а не через systemd?

Denis
30.06.2017
03:51:18
То, что у вас служба запущена, не говорит, что работает процесс постгреса. Показатель - ps aux
Служба - это просто обвзяка над запуском процесса

Daniel
30.06.2017
03:58:28
root@scw-7c22e8:/# 2017-06-30 03:58:09 UTC [1839-1] LOG: could not bind IPv4 socket: Cannot assign requested address
2017-06-30 03:58:09 UTC [1839-2] HINT: Is another postmaster already running on port 5432? If not, wait a few seconds and retry.
2017-06-30 03:58:09 UTC [1839-3] WARNING: could not create listen socket for "*******"
2017-06-30 03:58:09 UTC [1839-4] FATAL: could not create any TCP/IP sockets

Google

Daniel
30.06.2017
03:58:33
Теперь буду разбиратьсяяя

Denis
30.06.2017
03:59:52
Посмотрите netstat -an | grep 5432. Никто там не работает?

Daniel
30.06.2017
04:00:25
Ничего Оо
Сейчас сменил listen_address на *
root@scw-7c22e8:/# 2017-06-30 04:01:25 UTC [1886-1] LOG: database system was interrupted; last known up at 2017-06-28 14:47:55 UTC
2017-06-30 04:01:26 UTC [1886-2] LOG: database system was not properly shut down; automatic recovery in progress
2017-06-30 04:01:26 UTC [1886-3] FATAL: could not open directory "/var/run/postgresql/9.5-main.pg_stat_tmp": No such file or directory
2017-06-30 04:01:26 UTC [1885-1] LOG: startup process (PID 1886) exited with exit code 1
2017-06-30 04:01:26 UTC [1885-2] LOG: aborting startup due to startup process failure

Denis
30.06.2017
04:03:38
Посмотрите, существует ли /var/run/postgresql и с какими правами

Daniel
30.06.2017
04:04:05
drwxrwsr-x 2 postgres postgres 40 Jun 30 04:01 .

Admin
ERROR: S client not available

Daniel
30.06.2017
04:04:37
Команду делаю:
$ sudo -su postgres /usr/lib/postgresql/9.5/bin/pg_ctl start -D/etc/postgresql/9.5/main

Denis
30.06.2017
04:06:47
Ладно, безумный вопрос - после восстановления раздел /var не может read only быть смонтирован?

Daniel
30.06.2017
04:07:25
А как можно это безумно проверить? :с
Попробовать че то записать на диск?
Тоды из под рута или посгреса?
Я просто из церкви

Denis
30.06.2017
04:10:15
Напишите mount, если правильно помню, покажет все разделы и как смонтированы

Daniel
30.06.2017
04:13:12
Ох, мне кажется тут очень много неведомой фигни
У меня еще каким то фигом ssh отвалился - Connection Refused при попытке подключиться, на сервере попытки не логируются, ничего
Вся каша после восстановления
$ awk '$4~/(^|,)ro($|,)/' /proc/mounts
tmpfs /sys/fs/cgroup tmpfs ro,nosuid,nodev,noexec,mode=755 0 0
RO походу только эта фигня..

Google

Denis
30.06.2017
04:16:29
У вас ошибка говорит, что /var/lib/postgresql/9.5 не каталог кластера
Да, с var все ок в этом плане

Daniel
30.06.2017
04:19:45
Я психанул
И создал /var/run/postgresql/9.5-main.pg_stat_tmp
Теперь только логи:
2017-06-30 04:19:36 UTC [1953-65] LOG: could not open temporary statistics file "/var/run/postgresql/9.5-main.pg_stat_tmp/global.tmp": Permission denied
А
Создавал под рутом.. Фук..

Denis
30.06.2017
04:22:10
покажите ls -la для /var/run/postgresql. где-то там не те права и не для того пользователя

Daniel
30.06.2017
05:19:48
Да, поставил владельцем посгрес и ок все
Спасибо за помощь
Мне тут недавно кстати приходилось на протяжении 3 дней получать в базу около 20 запросов в секунду на запись. Потом забился каким-то фигом диск, 20 ГБ аномально забились, пробовал искать большие файлы и директории командами:
$ find / -size +10M -size -12M -ls
du -sch .[!.]* * |sort -h
Но ничего не находилось, что могло в совокупности занять 20 ГБ
После рестартнул постгрес и 20 гб освободилось на диске

Айтуар
30.06.2017
05:35:04

Daniel
30.06.2017
05:35:55
Что может там занимать столько места после ~ 10 млн запросов?
И это что-то убивается при restart

Айтуар
30.06.2017
05:38:23

Denis
30.06.2017
05:42:51

Sergey
30.06.2017
06:33:19

Artem
30.06.2017
06:33:53
Ага. Попробуйте ее запустить на 9.5/9.6

Sergey
30.06.2017
06:38:03
Да, не похоже чтобы 2ndquadrant спешили портировать BDR под 9.6 - Postgres-BDR 1.0.2 on Server version 9.4.12 Released - May 18, 2017