@pgsql

Страница 188 из 1062
lemi
14.12.2016
07:42:29
В таблицу за раз кладется около 200к строк, которые удаляются перед вставкой нового блока
непонятно как синхронизируется все столько строк вставлять и удалять и обрабаывать это время как процесс который ложит данные синхронизируется с процессом который потом эти данные по партициям разносит? update о котором шла речь идет на таблицы партиций или на эту временную таблицу ?

а удаляет из временной таблицы какой процесс как он с первыми двумя синхронизируется

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 документы с кучей мусора

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
вообще конфигуратор настроит сервис
а не make install разве это должен делать?

о, минут за 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
права

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
2016-12-14 14:02:39 GMT [5376-2] LOG: invalid value for parameter "log_timezone": "localtime" возможно линк /etc/localtime смотрит не туда
фигня какая, почему ж постгрес из APT запускается, а скомпилированный нет?

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

для libpq это работает

blkmrkt
14.12.2016
14:14:57
переменную окружения $PGTZ можно попробовать сделать с таймзоной
PGTZ=Europe/London ./bin/postgres -D /etc/postgresql/9.5/main/ вот так вот сделал, то же самое

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 ну и порты адреса по необходимости

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