@pgsql

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

Yaroslav
23.03.2018
18:47:03
так vacuum full же поидее пересоздает таблицу физически на диске, и это помогло, но после апдейтов тех же самых снова побилась таблица или у меня неправильные знания по vacuum full ?
Да у вас база битая, понимаете? И шаманить с ней можно либо если вам эта база уже не нужна, либо если у вас нет backup-а. Вы железо проверяли?

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
просто я думал, что пг не будет делать seq scan для простого подсчета числа строк
Будет-будет, если существенно более "узкого" индекса нет (зависит от random_page_cost, впрочем). Кроме того, эти text и JSON-ы могут большей частью попадать в TOAST, поэтому сами tuples могут быть в среднем небольшими.

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

Yaroslav
23.03.2018
20:13:16
просто я думал, что пг не будет делать seq scan для простого подсчета числа строк
Почему бы вам просто не посмотреть её размер (pg_relation_size, pg_table_size...)?

Артур
23.03.2018
20:16:44
в каких случаях лучше использовать INHERITS таблицы и вообще насколько это нормальная правктика?

Вот например у меня есть разные типы клиентов, но у них всех всегда есть телефон, имя и ИНН остальное отличается по типу клиента

Думаю создать таблицу и наследуемые таблицы с дополнительными полями

Либо есть вариант просто сделать таблицы с разными типами без какого либо наследования

Идеально то, что не придется искать по ИНН во всех таблицах

Yaroslav
23.03.2018
20:20:39
Думаю создать таблицу и наследуемые таблицы с дополнительными полями
Лучше не думайте, IMHO. Наследование в PostgreSQL полезно в основом для партиционирования, а для моделирования плохо подходит.

Yaroslav
23.03.2018
20:22:07
ясно, тогда не буду думать :)
Конкретнее: https://www.postgresql.org/docs/current/static/ddl-inherit.html#DDL-INHERIT-CAVEATS

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

Yaroslav
23.03.2018
20:24:17
https://postgrespro.ru/docs/postgrespro/10/ddl-inherit Ну я здесь читал :)
Ну вот прямо оттуда: "Возможности наследования серьёзно ограничены тем, что индексы (включая ограничения уникальности) и ограничения внешних ключей относятся только к отдельным таблицам, но не к их потомкам. Это касается обеих сторон ограничений внешних ключей." И т.д. Вам всё ещё нравится? ;)

Артур
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 не работают

Трудно представить БД без них

Alex
23.03.2018
20:36:47
так, кто тут жаждал подробностей про компрессию в InnoDB? я нашёл немного времени: http://telegra.ph/Sravnenie-arhitektury-szhatiya-dannyh-v-InnoDB-i-PgPro-Enterprise-03-23
Ой а что тут у нас говорят! https://www.percona.com/blog/2017/11/20/innodb-page-compression/ Скопировать дырявый mysql файл дело всего 52 минут на ссд. Очень инновационный подход к сговору с производителями железа. То есть я правильно понимаю что нельзя так просто взять и скопировать компрессированн базенку мускула на другой сервер по scp? Компрессия то в таком случае в тыкву превращается, я правильно понимаю?

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

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
Артур
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: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
Удаленно?

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