
Евгений
05.12.2016
12:46:22
А можно ли в PG для запроса INSERT сделать несколько conflict_actions? То есть:
INSERT ... ON CONFLICT (constr1) DO UPDATE .. ON CONFLICT (constr2) DO NOTHING ON CONFLGICT (constr3) ... а по constr4 просто упасть?
Понятно, что официальная дока говорит, что "нет", но это можно как-то обойти?
Или только порождать чудовище-хранимку?

Vadim
05.12.2016
12:51:32
Попробуйте триггеры + exception

Евгений
05.12.2016
12:52:13
а в один запрос это можно запихнуть? т.е. сделать что-то вроде EXECUTE 'тут километр plpgsql' ?

Google

Евгений
05.12.2016
12:53:12
очень не хочется исльно усложнять базу, пусть это сидит в приложении

Darafei
05.12.2016
12:54:01
конечно, можно, он же тьюринг-полон

Sergey
05.12.2016
12:59:08
Особенно если идет вставка в больших объемах
По-моему надо в архитектуре приложения что-то пересмотреть. Поправьте меня, если это не так

Darafei
05.12.2016
13:16:41
эх, заслал ещё один ишью в датагрип https://youtrack.jetbrains.com/issue/DBE-3580

Gonchik
05.12.2016
16:21:38
@blkmrkt Есть новости? Мне кажется подобное предстоит, поэтому интересуюсь

blkmrkt
05.12.2016
16:21:52

Igor
05.12.2016
19:31:50
если я буду настраивать postgres по книжке "postgreSQL High Perfomance" от 2010г, где рассказывают про 8.3, это сильный выстрел в ногу?

Айтуар
05.12.2016
19:37:38

Igor
05.12.2016
19:38:02
последнее обновление - 2014г.
хотя получше, да

Аггей
05.12.2016
19:38:50
2014 - 9.2 или 9.3 была

Google

Айтуар
05.12.2016
19:41:22
Ну первый шаг это pgtune, а дальше уже читать и пробовать.

Igor
05.12.2016
19:46:38
>Установка shared_buffers больше 8 ГБ не даёт никакого хорошего эффекта
это все ещё правда?

Alex
05.12.2016
19:49:12
в теории правда, на практике не очень )

Evgeniy
05.12.2016
20:01:49
в 9.5 были сделаны хорошие вещи чтобы было получше
но лру говно и устройство хеша не особо помогает
андрейс фрейнд вроде делает шаред буферс лучше
но патча в 10.0 пока нет
в общем с чекпоинтами и шаред буферами геморроя еще предостаточно
до мускуля далеко

Igor
05.12.2016
20:18:37
после 9.3 уже не надо настраивать kernel.shmmax/shmall?

Марк ☢
05.12.2016
20:19:48
Последнее всегда читал как "шмаль"

Айтуар
05.12.2016
20:20:33
Шмакс и шмаль я тоже так читаю))

Igor
05.12.2016
20:22:35
# cat /proc/sys/kernel/shmall
18446744073692774399
# cat /proc/sys/kernel/shmmax
18446744073692774399
Э... это теперь норма?
на двух серверах с последним дебианом
почему они у него одинаковые?

Айтуар
05.12.2016
20:24:54

Igor
05.12.2016
20:27:02
32гб оперативной

Айтуар
05.12.2016
20:29:53
kernel.shmmax=17179869184
kernel.shmall=4194304
В http://pgtune.leopard.in.ua

Igor
05.12.2016
20:31:17
я читал. На старых дебианах и постгресах так и делал. Но тут говорят что после 9.3 уже пофиг, и дебиан 8 ставит какие-то конские дефолтные значения, вдруг ему виднее

Марк ☢
05.12.2016
20:47:41

Google

Igor
05.12.2016
20:48:21
какая проблема? такое приехало в свежем дебиане, я не трогал

Марк ☢
05.12.2016
20:48:50
Посмотри в хексе
Если реверснуть не получится ли нормальное число ?

Darafei
05.12.2016
20:50:15
почему вдруг баг и зачем материться?

Evgeniy
05.12.2016
20:50:21
shmmax
Defines the maximum size (in bytes) of a single shared memory segment allowed by the kernel. Starting with Red Hat Enterprise Linux 7.1, the default value for shmmax set by the kernel at boot time is 18446744073692774399 bytes. In Red Hat Enterprise Linux 7.1, this value was overwritten by the kernel.shmmax sysctl parameter set in the /usr/lib/sysctl.d/00-system.conf file. In Red Hat Enterprise Linux 7.2 and later, parameters overriding the kernel default have been removed, so the system-wide default value is set to 18446744073692774399 bytes. To change the system-wide default value, set kernel.shmmax in /etc/sysctl.d/01-shm.conf to the intended value.
не знаю чего вам не так
лимиты вообще должны в прошлое уйти

Марк ☢
05.12.2016
20:50:47

blkmrkt
06.12.2016
05:23:56
неа, пока еще бекап делаю
такс, преустановил дебиан, сейчас поставлю такую версию постгреса и попробую запустить со старым датафолдером

Петр
06.12.2016
06:35:46

Айтуар
06.12.2016
06:36:35

Петр
06.12.2016
06:38:00
не понял
если памяти 32, то я бы увеличил размеры shmmax, shmall
да еще включил бы большие страницы

Айтуар
06.12.2016
06:41:56
Но при 32 большие страницы не нужны особо

Алексей
06.12.2016
06:42:19
или надо что то крутить ?

Айтуар
06.12.2016
06:42:42

Петр
06.12.2016
06:42:44
у вас 9.5? он должен быть вклбючен по умолчанию

Google

Айтуар
06.12.2016
06:43:07

Петр
06.12.2016
06:45:14
да посмотрите в /proc/meminfo, пользуются большие страницы или нет

Айтуар
06.12.2016
06:46:10
Есть хорошая статья по настройке больших страниц на хабре.

Аггей
06.12.2016
06:47:19
Про большие страницы - в pg настройка по дефолту - использовать, если есть возможность - то есть если включены в ос

Петр
06.12.2016
06:49:02

Айтуар
06.12.2016
06:50:13

Admin
ERROR: S client not available

Евгений
06.12.2016
09:45:50
Вообще вставлять конфликтные данные в базу без предварительной валидации - плохо.
По идее - да. С другой стороны обеспечить их бесконфликтность надежно нельзя. Те же ORM работают по принципу "есть id у записи или нет". И все равно никто не застрахован, что данные не появятся.
Как понимаю, для надежного решения проблемы и был придуман Merge | Upsert.
Кстати. оа он дает оверхед? Как скаежм, если я буду делать вставку в транзацкции, и поом ее откатывать? Или там идет проверка раньше?

Vadim
06.12.2016
11:48:13
а postgresql -> oracle как можно данные смигрировать? в обратную сторону так сказать

Paul
06.12.2016
11:49:14

Vadim
06.12.2016
11:50:06
мало, пару гигов
сам sql дамп постгресовый можно на оракле как-то выполнить подредактировав


blkmrkt
06.12.2016
12:21:17
@blkmrkt Есть новости? Мне кажется подобное предстоит, поэтому интересуюсь
все окей! просто заменил данные директории, запустил сервер, он ругался на permission denied. Сделал chown -R postgres /var/lib/postgresql/9.5/main, снова запустил и все ок:
2016-12-06 14:19:22 EET [4464-2] LOG: database system was not properly shut down; automatic recovery in progress
2016-12-06 14:19:22 EET [4464-3] LOG: redo starts at 1560/D5CE78F0
2016-12-06 14:19:22 EET [4474-1] postgres@postgres FATAL: the database system is starting up
2016-12-06 14:19:22 EET [4477-1] postgres@postgres FATAL: the database system is starting up
2016-12-06 14:19:23 EET [4480-1] postgres@postgres FATAL: the database system is starting up
2016-12-06 14:19:23 EET [4464-4] LOG: invalid magic number 0000 in log segment 0000000100001560000000E7, offset 0
2016-12-06 14:19:23 EET [4464-5] LOG: redo done at 1560/E6FFF960
2016-12-06 14:19:23 EET [4464-6] LOG: last completed transaction was at log time 2016-11-23 01:09:47.40058+02
2016-12-06 14:19:23 EET [4483-1] postgres@postgres FATAL: the database system is starting up
2016-12-06 14:19:24 EET [4486-1] postgres@postgres FATAL: the database system is starting up
2016-12-06 14:19:24 EET [4489-1] postgres@postgres FATAL: the database system is starting up
2016-12-06 14:19:25 EET [4492-1] postgres@postgres FATAL: the database system is starting up
2016-12-06 14:19:25 EET [4495-1] postgres@postgres FATAL: the database system is starting up
2016-12-06 14:19:26 EET [4498-1] postgres@postgres FATAL: the database system is starting up
2016-12-06 14:19:26 EET [4499-1] [unknown]@[unknown] LOG: incomplete startup packet
2016-12-06 14:19:27 EET [4464-7] LOG: MultiXact member wraparound protections are now enabled
2016-12-06 14:19:27 EET [4463-1] LOG: database system is ready to accept connections
2016-12-06 14:19:27 EET [4506-1] LOG: autovacuum launcher started
чудо что данные не похерились, я это из 3,9/5 дисков RAID5 собрал


Alexey
06.12.2016
12:22:58
RAID5 не нужен. RAID6.

blkmrkt
06.12.2016
12:23:34
т.е. данные как раз на RAID5 пока еще влезают

Alexey
06.12.2016
12:24:13
А, у меня два года назад был отказ одного, потом второго диска с пятым рейдом, после успеха на неделю в лес уехал водку пить и песни орать.

blkmrkt
06.12.2016
12:24:32
я тоже сегодня отмечу ?

Google

Alexey
06.12.2016
12:25:28
Я бы не стал называть это „отмечанием”, это больше похоже на психическую реабилитацию и депривацию стрессовых паттернов сознания. По-моему достаточно мудрёно получилось сказать, чтобы отразить всю глубину седины волос. :D

Айтуар
06.12.2016
12:28:34
сделай дапм или full vacuum

Alexey
06.12.2016
12:29:53
Да, в начале прежде чем бухать — проверь. А то будет очень больно с похмелья осознавать, что головняк никуда не уходил.

blkmrkt
06.12.2016
12:30:19
и восстановлю его

Айтуар
06.12.2016
12:31:30

blkmrkt
06.12.2016
12:32:07

Айтуар
06.12.2016
12:32:31

blkmrkt
06.12.2016
12:33:07
fsck и дапм разные вещи
угу, я уже встречался с out of sync индексами и дубликатами pkeys, это подозреваю самое страшное

Dmitriy
06.12.2016
12:34:29
Ребята, а как же 10 raid, пара реплик? как вообще жить то так можно спокойно с одним сервером БД и без бэкапов? Мне бы кошмары каждую ночь снились

Alexey
06.12.2016
12:35:47

blkmrkt
06.12.2016
12:35:52

Айтуар
06.12.2016
12:36:04

Dmitriy
06.12.2016
12:36:29
Тогда хотя бы дампы, на другой диск
серьезно, а если бы не восстановилось?

blkmrkt
06.12.2016
12:37:17
я вот Дебиан переустанавливал, почитал немного про LVM. Если без mdadm разметить одну группу lvm поверх 5 дисков и создать на ней логический том, получится что-то вроде простого RAID0?

Айтуар
06.12.2016
12:37:33

blkmrkt
06.12.2016
12:41:09
Тогда хотя бы дампы, на другой диск
я медленный 8ТБ диск поставил, буду сначала на него писать еженедельный дамп, а с него раз в месяц в google nearline. только как бы делать это инкрементально, чтоб не выгружать все каждый раз