
Andrew
23.03.2018
18:40:24
так vacuum full же поидее пересоздает таблицу физически на диске, и это помогло, но после апдейтов тех же самых снова побилась таблица
или у меня неправильные знания по vacuum full ?

Yaroslav
23.03.2018
18:47:03

Andrew
23.03.2018
18:47:32
железо в смысле диски?
или вообще все в целом?

Google

Andrew
23.03.2018
18:47:55
бекап есть, да

Yaroslav
23.03.2018
18:50:59
Всё в целом. Проблемы-то, хоть и куда реже, бывают и RAM, и motherboard.
Т.е. причина corruption какая-то должна быть.
Кстати, а вы не unsafe настройками работаете (fsync и т.п.)? Дисковая подсистема правильно настроена?
Конечно, может быть и так, что вы наткнулись на bug PostgreSQL, но сначала лучше исключить другие причины.
А какой backup у вас есть? Standby есть?

Andrew
23.03.2018
18:52:43
есть
два standby, на них и перевели нагрузку, закрыв редактирование
Проверим железо,
видимо придется восстанавится с бекапа
спасибо

Yaroslav
23.03.2018
18:55:05
Ну а если снять backup с какого-то из этих standby, развернуть его куда-то ещё, и проверить ваш task там?
(Если есть время и возможность, конечно.)

Andrew
23.03.2018
18:56:25
таск проверяли как раз до выполнения на продакшен что интересно выполнился успешно
на той же версии бд,
очень похоже что в железе проблемы, да

Google

Yaroslav
23.03.2018
18:57:47
Ну ладно, выполнить то, что на master-е вызывало проблемы (в последний раз это был VACUUM, если я правильно понял).

Andrew
23.03.2018
18:59:33
успешно прошел

Yaroslav
23.03.2018
19:07:49
Всей базы?
Если да (и, например, её удаётся сдампить), действительно похоже на битое железо...

Andrew
23.03.2018
19:14:17
Дамп запустистили

Артур
23.03.2018
19:33:50
Провет.
Какой лучше способ долговременного хранения текстов в поле в базе данных?
Данные могу быть как 2 байта, так и 1мб

Evgeniy
23.03.2018
19:38:20
тип text!
очень хорошо подходит для хранения текстов

Артур
23.03.2018
19:38:59
А чтобы меньше весило TOAST Юзать?
Без сарказма. Серьезный вопрос

Evgeniy
23.03.2018
19:39:29
тоаст сам включится когда 2kb превысит

Артур
23.03.2018
19:39:41
Ясно. Спасибо

Evgeniy
23.03.2018
19:40:07
незачто

Alexey
23.03.2018
19:52:34
но TOAST иногда очень мешается. спросите пгпро — они расскажут подробности

Evgeniy
23.03.2018
20:01:02
fud тут распространяют

Maxim
23.03.2018
20:04:12

Yaroslav
23.03.2018
20:05:30
И каждая из строк по 20 байт? Или по 4 кб? ;)
От размера таблицы же зависит...

Maxim
23.03.2018
20:06:02
по много) два поля Text с (потенциально) большими джсонами
просто я думал, что пг не будет делать seq scan для простого подсчета числа строк

Yaroslav
23.03.2018
20:10:32

Google

Evgeniy
23.03.2018
20:10:35
ну, веди каунт сам

Yaroslav
23.03.2018
20:13:16

Артур
23.03.2018
20:16:44
в каких случаях лучше использовать INHERITS таблицы и вообще насколько это нормальная правктика?
Вот например у меня есть разные типы клиентов, но у них всех всегда есть телефон, имя и ИНН остальное отличается по типу клиента
Думаю создать таблицу и наследуемые таблицы с дополнительными полями
Либо есть вариант просто сделать таблицы с разными типами без какого либо наследования
Идеально то, что не придется искать по ИНН во всех таблицах

Yaroslav
23.03.2018
20:20:39

Артур
23.03.2018
20:21:02

Yaroslav
23.03.2018
20:22:07

Артур
23.03.2018
20:22:39
https://postgrespro.ru/docs/postgrespro/10/ddl-inherit
Ну я здесь читал :)

Yaroslav
23.03.2018
20:24:17

Артур
23.03.2018
20:24:50
Я не пробовал. Поэтому трудно говорить объективно. Поэтому и вопрос задал ?

Yaroslav
23.03.2018
20:28:42
В общем, "Возможно, в будущем эти недостатки будут исправлены..." и так уже больше десяти лет, как мне помнится.
IMHO, дело тут в том, что всё это появилось "на взлёте" объектно-реляционных СУБД. Когда они "упали", на это справедливо забили.

Аггей
23.03.2018
20:29:20
Насколько я понимаю проблема в отсутствии глобальных индексов

Yaroslav
23.03.2018
20:31:09
Да, в основном. И сейчас их, кстати, вроде бы делают для другой цели —- полноценного партиционирования.
Так что, может быть, мы увидим их и в INHERITANCE (впрочем, я эти thread-ы почти не читал).

Аггей
23.03.2018
20:32:44
Ну я секционирование не могу использовать в 90% случаев потому, что FK не работают
Трудно представить БД без них

Evgeniy
23.03.2018
20:35:55

Alex
23.03.2018
20:36:47

Google

Evgeniy
23.03.2018
20:37:23
делают поддержку пк когда партишон кей входит в него. типа синтакс шугар

Alexey
23.03.2018
20:38:17

Evgeniy
23.03.2018
20:38:29

Аггей
23.03.2018
20:38:38

Alex
23.03.2018
20:39:11
А чой то мы такие грубые?

Evgeniy
23.03.2018
20:39:31
а чо вы у вас споры такие беззубые

Alexey
23.03.2018
20:39:31
я с чуваками из facebook обсуждал table compression против page compression. но это потянет на ещё один блог пост

Yaroslav
23.03.2018
20:40:27

Alexey
23.03.2018
20:43:34
нет, на самом деле, для "обычных пользователей", у которых один сервер-серверочек, page compression — очень даже вариант. примерно как pgpro enterprise. а вот если в масштабе, то только table compression

Evgeniy
23.03.2018
20:48:39
у нас к сожалению в постгресе люди ещё не различают энкодинг от компрессии
в колоночных базах такое различие внезапно очень важно и устоялось
а у нас делают патч для кастом тайп копрешон, чтобы делать энкодинг жсона по словарю, а люди справедливо спрашивают а чем вам lz для компрессии не подходит и зачем этот патч нужен

Артур
23.03.2018
20:57:06
Я же правильно понимаю значение слова "компрессия" - сжатие/уменьшение объема данных без потери содержимого?
И если так, то почему его путают с энкодингом?
Я почему спрашиваю: может я что-то тоже вижу неправильно и вы мне об этом скажете

Аггей
23.03.2018
20:59:44
Евгений видимо имел ввиду, что обычное сжатие - самодостаточно. А для обратного преобразования из энкодинга который он описал - нужен словарь
Или я тоже не понял

Evgeniy
23.03.2018
21:08:57
энкодинг обычно это специфичные для типа данных алгоритмы типа rle или словаря. они позволяют с приседаниями даже оперировать данными не разжимая. а компрессия обычно блочная и тупая

Артур
23.03.2018
21:09:13
Ясно

Аггей
23.03.2018
21:10:06
Словари я думаю эффективнее байтового сжатия при ограниченном наборе значений в json

Google

Evgeniy
23.03.2018
21:10:38

Артур
23.03.2018
21:11:16
Пока планирую структуру, еще вопросец тут всплыл - по эстетике ?, .
Например таблица называется client_inner_sources
Думаю назвать связанное поле в другой таблице client_inner_source_id
Но вроде как-то длинно...

Evgeniy
23.03.2018
21:11:33
но zson например такой классный энкодинг делает, что на реальных данных одного проекта, табличка стала жырнее
ну там мало ключей типа, а в зсон есть оверхед где не ждали

Артур
23.03.2018
21:12:32

Evgeniy
23.03.2018
21:12:36
cis_id
главное только консистентность названия поддерживать в других системах

Артур
23.03.2018
21:13:48
?
про системы не совсем понял

Evgeniy
23.03.2018
21:14:19

Артур
23.03.2018
21:14:30
аааааа
понял

Evgeniy
23.03.2018
21:14:42

Ilia
24.03.2018
04:45:59
Ах да. Вопрос забыл задать:
Как именовать связанные поля лучше? есть рекоммендации?
Если ключ в дочерней один, так и оставлять как в родительской табличке. Если ключей больше одного, надо добавлять в имя role name. Причем иногда можно добавлять, иногда замещать role name-ом имя родительского поля. Как удобнее. Это зависит от предметки и таблицы.
Role name это роль атрибута в дочерней таблице. Например два юзера посылают письмо друг другу, оба юзера, но у одного роль отправитель, у другого получатель.

Ryzhikov
24.03.2018
05:30:14
ребята а про вакансию здесь можно?

Maks
24.03.2018
05:37:19
Можно

Ilia
24.03.2018
05:38:38

Ryzhikov
24.03.2018
05:39:25
Мы (health-samur.ai) делаем медицинскую платформу на FHIR/pg/k8s/clojure/cljs и нам нужен базовый самурай (postgresql in kubernetes, logical replication, a lot of jsonb, custom pg extension). Стремление к фулстеку.

Andrew
24.03.2018
05:51:24
Удаленно?