
lemi
14.12.2016
07:42:29
а удаляет из временной таблицы какой процесс как он с первыми двумя синхронизируется

Sergey
14.12.2016
08:05:29
Есть основной процесс, он последовательно делает следующие вещи: чистит временную таблицу, заливает данные, обновляет их, вызывает процедуру разнесения данных по партициям, дожидается ее окончания и чистит временную таблицу
Т.е. никаких дополнительных/параллельных процессов не создается

Google

Denis
14.12.2016
08:07:26
у меня подобное, только ~80м и ничего не лочится, проблема в коде а не в бд

lemi
14.12.2016
08:35:56
так вы ж говорите что у вас и го и java
а это уже два процесса

Sergey
14.12.2016
08:39:46
Два варианта реализации) в один момент времени запущен только один

lemi
14.12.2016
08:47:43
Однопоточное приложение в одно соединение к БД ?

Sergey
14.12.2016
08:54:57
В настоящее время да

Denis
14.12.2016
08:55:21
altertable делается? Сколько подключений?

Sergey
14.12.2016
08:55:23
Занято заливкой данных из системы мониторинга для долговременного хранения

Denis
14.12.2016
08:55:41
внешние ключи убираешь? Индексы создаешь/дропаешь?

Sergey
14.12.2016
08:55:48
Alter не делается, подключение одно
Создание индексов происходит при создании партиций через like
Больше никаких изменений со структурой не происходит

Denis
14.12.2016
08:56:47
create index блокирует работу с таблицей в других транзакциях

Google

Sergey
14.12.2016
08:58:26
Создание партиций/инлексов происходит в том же потоке, но только перед вставкой

Denis
14.12.2016
09:03:31
проблема не в постгресе

lemi
14.12.2016
09:03:57
проверяй сеть в таком случае
Тольео в этом случае все равно вылетела бы ошибка

Sergey
14.12.2016
09:09:31
Буду смотреть дампы сети, когда ошибка начнет повторяться
Кстати, возможно ли включить параллельный просмотр наследованных таблиц при запросе к родительской?

Denis
14.12.2016
12:51:17
Народ, distinct по индексу из коробки в постгрес еще не завезли ведь?

lemi
14.12.2016
12:52:25
если искать только по полям которые в индексе и в правильно последовательности

Denis
14.12.2016
12:53:14
не выходит

dmitriy
14.12.2016
12:54:40
вы имеете в виду вот это? https://wiki.postgresql.org/wiki/Loose_indexscan

Denis
14.12.2016
12:55:00
да

lemi
14.12.2016
12:55:12
create table jenkins.test(a int);
insert into jenkins.test(a)
select 100 from generate_series(1,10000);
insert into jenkins.test(a)
select 200 from generate_series(1,10000);
insert into jenkins.test(a)
values(300);
create index on jenkins.test using btree(a);
analyze jenkins.test;
explain analyze
select distinct on (a) a from jenkins.test
Unique (cost=0.29..670.31 rows=3 width=4) (actual time=0.104..6.502 rows=3 loops=1)
-> Index Only Scan using test_a_idx on test (cost=0.29..620.30 rows=20001 width=4) (actual time=0.103..5.259 rows=20001 loops=1)
Heap Fetches: 20001
Planning time: 0.044 ms
Execution time: 6.527 ms

dmitriy
14.12.2016
12:56:28
вы вставьте туда 200kk строк, например

Denis
14.12.2016
12:56:29
а если полей больше 1
в индексе
и по первому уникальные значения получить

lemi
14.12.2016
12:56:50
то соблюдаем очереденость полей в индекс и в distinct

Denis
14.12.2016
12:57:45
не ну, в индексе 2 поля, а надо получить distinct только первого
это же должно за O(n) делатся, обычным сканом индекса

Google

Denis
14.12.2016
13:00:08
работает, просто планер считает что seq scan быстрей :) , set enable_seqscan=f; пролечил план, значит постгрес может в это
спасибо

lemi
14.12.2016
13:00:51
analyze таблички нужно не забывать делать по умолчанию настройки не всегда успевают статиситку обнволять
ну и конешно уникальных записей должно быть сильно меньше чем записей всего

Denis
14.12.2016
13:01:52
да, планировщик не дурак однако

blkmrkt
14.12.2016
13:09:57
может кто знает, опишите пожалуйста как лучше пропатчить/собрать свой постгрес и запустить его на сервере. нужно 1 строчку в сорце заменить, чтоб вместо error делал ворнинг

lemi
14.12.2016
13:11:48
с github chekcout правила сборки все там же
лучше брать стабильный бранч
собирается минут 15

blkmrkt
14.12.2016
13:12:30
спасибо, точно, читаю сейчас доки

lemi
14.12.2016
13:13:08
собирал 9.5 на centos 7.2

blkmrkt
14.12.2016
13:13:40
вот у меня тоже 9.5

dmitriy
14.12.2016
13:14:08
делаете патч, дальше настройте автосборку какую-нибудь, которая будет накладывать патч (git apply) и компилить, ну а дальше в пакет упаковывайте, да и все. Дальше по кнопке у вас будет браться с какого хотите коммита или ветки, накладываться ваш патч и собираться

blkmrkt
14.12.2016
13:14:52
о спасибо. мне бы один раз запустить да данные извлечь, вот эту строчку закомментить https://github.com/postgres/postgres/blob/REL9_5_STABLE/src/backend/access/transam/multixact.c#L1285

lemi
14.12.2016
13:15:40
Там кажется делаем ./configure
при жалобах смотри что отсуствует, доустанавливаем по необходимости.

blkmrkt
14.12.2016
13:16:10
а бинарник потом просто запускается из папки артефактов с путем к datadir?

dmitriy
14.12.2016
13:16:20
вы тогда посмотрите pg_config с какими параметрами сконфигурена, на чьих данных надо запуститься и компильте с такими же

blkmrkt
14.12.2016
13:18:24
ok супер
как считаете, не будет катастрофы если закомменчу этот блок и попробую удалить невалидные данные? https://github.com/postgres/postgres/blob/master/src/backend/access/heap/heapam.c#L3063

Google

Alex
14.12.2016
13:22:54
детектив прям

blkmrkt
14.12.2016
13:23:08
угу ?

Anatoliy
14.12.2016
13:23:42
А сколько хватает терпения. Я бы бросил давно)

blkmrkt
14.12.2016
13:23:44
блин, каждый раз когда лучше бы вникнуть в чужой код, возникает такое чувство что "не, лучше не читать, зачем мне это"
да сервер простаивает, я особо не спешу, но зарекся не принимать алкоголь пока не извлеку данные

Anatoliy
14.12.2016
13:24:51
Дык может потому и простаивает, что не принимаете?)

blkmrkt
14.12.2016
13:25:19
да и не знаю уж

Denis
14.12.2016
13:28:06
бухать не выход, но вариант

blkmrkt
14.12.2016
13:33:24
а вот есть еще вариент написать скрипт для дергания данных, но на сервере нет места для полного бекапа, но есть медленный HDD на 8ТБ. Допустим я получил строку целых данных из БД, как ее лучше на диск записать? с csv не будет проблем? а то там есть очень жирные jsonb документы с кучей мусора

Paul
14.12.2016
13:40:48

Admin
ERROR: S client not available

lemi
14.12.2016
13:47:21
вообще конфигуратор настроит сервис

blkmrkt
14.12.2016
13:47:46

lemi
14.12.2016
13:47:46
при сборке а но можно запускать и бинарник
но systemctl start postgres-9.5-service проще
ну можно посмотреть куда он его собереть и запустить
pg_ctl start -D data_di -l log_dir/my.log


blkmrkt
14.12.2016
13:51:08
о, минут за 5 собрался
хммм, как так если конфиг от старого сервера:
postgres@3081:/usr/local/pgsql$ ./bin/pg_ctl start -D /var/lib/postgresql/9.5/main/
server starting
postgres@3081:/usr/local/pgsql$ LOG: SSL is not supported by this build
2016-12-14 14:02:39 GMT [5376-2] LOG: invalid value for parameter "log_timezone": "localtime"
2016-12-14 14:02:39 GMT [5376-3] LOG: invalid value for parameter "TimeZone": "localtime"
2016-12-14 14:02:39 GMT [5376-4] FATAL: configuration file "/var/lib/postgresql/9.5/main/postgresql.conf" contains errors
я postgresql.conf туда из /etc/postgresql/ скопировал, но это data dir, ничего не понимаю
postgres@3081:/usr/local/pgsql$ ./bin/postgres -D /var/lib/postgresql/9.5/main/
postgres cannot access the server configuration file "/var/lib/postgresql/9.5/main/postgresql.conf": No such file or directory
там же не должно конфига быть, да? это data dir старого сервера

Google

Pavel
14.12.2016
14:06:42
2016-12-14 14:02:39 GMT [5376-2] LOG: invalid value for parameter "log_timezone": "localtime"
возможно линк /etc/localtime смотрит не туда

dmitriy
14.12.2016
14:06:47
права

blkmrkt
14.12.2016
14:06:49
права
я собирал юзером постгрес все, и он права на все имеет

dmitriy
14.12.2016
14:07:12
не права
)

blkmrkt
14.12.2016
14:07:51
а не ок `postgres@3081:~$ zdump /etc/localtime
/etc/localtime Wed Dec 14 16:08:38 2016 EET`

nietzschebrod
14.12.2016
14:08:42
это файл таймзоны

Pavel
14.12.2016
14:09:09
вот. а должен на /usr/share/zoneinfo/таймзона

blkmrkt
14.12.2016
14:12:13

Pavel
14.12.2016
14:12:57
переменную окружения $PGTZ можно попробовать сделать с таймзоной
для libpq это работает

blkmrkt
14.12.2016
14:14:57

lemi
14.12.2016
14:15:52
export PGTZ=...

blkmrkt
14.12.2016
14:16:40
неа, та же ошибка

Pavel
14.12.2016
14:17:35
а у тебя не debian 6?

blkmrkt
14.12.2016
14:17:42
закомментил обе строчки с log_timezone и timezone, теперь просто ошибка:
2016-12-14 14:17:25 GMT [5475-2] FATAL: configuration file "/etc/postgresql/9.5/main/postgresql.conf" contains errors

Pavel
14.12.2016
14:17:54
попробуй закоментить вообще

blkmrkt
14.12.2016
14:18:10
угу закомментил, сейчас просто ошибка без пояснения где
а может попробовать бинарник из пакета заменить тем что я скомпилил?

lemi
14.12.2016
14:23:27
неплохо бы открыть postgresql.conf и пробежать дабы проверить
пути если таковый указаны на присуситвие в fs
ну и порты адреса по необходимости