
Amir
09.05.2018
23:27:16
Скину сюда через полтора часа ddl, предметно обсудим)
сам пока вижу только один кейс где это дествительно было бы полезным: прибегать к изменениям частичных данных разбросанных по наследуемым таблицам без измеения записи родиельской, на которой и так слишком много заложено логики
но если вы захотите отфильтровать и по телефону и по другим таким отдельно выделенным параметрам, думаю будет деградация в производительности запроса
нежели если бы эти данные были бы в одном месте

Антон \ (•◡•) / 1c8SysAdm
10.05.2018
04:47:08
Здравствуйте ставлю на сентос6.9 постгрес 9.6

Google

Антон \ (•◡•) / 1c8SysAdm
10.05.2018
04:47:13
runuser: невозможно установить группы: Операция не позволяется
я понял что пользователь postgres не может службу запустить из-за selinux как его настроить?

Shaz
10.05.2018
06:32:02

Konstantin
10.05.2018
06:34:00
опасный путь предлагаешь ты.

Shaz
10.05.2018
06:36:19

Egor
10.05.2018
06:36:51

Tolya
10.05.2018
06:57:27
Всем привет!
У кого-то есть опыт настройки репликации между PostgreSQL и tarantool?

Shaz
10.05.2018
07:02:49

Tolya
10.05.2018
07:04:21
хочу попробовать поставить тарантул в качестве кеша перед постгресом

Shaz
10.05.2018
07:06:18

Tolya
10.05.2018
07:14:34
поэтому и пробую ?
если есть какие-то явные минусы у этого решения, расскажи, плиз, было бы полезно

Котяй Негодяй
10.05.2018
07:41:17
А в постгре можно создавать индексы по вложенным свойствам jsonb-полей?

Google

Darafei
10.05.2018
07:41:51
В постгресе есть бсон?

Котяй Негодяй
10.05.2018
07:42:08
Дыа. =)
ой тьфу.
jsonb
Монгодб головного мозга.

Artyem
10.05.2018
07:44:15
если это поле получается как результат работы иммутабельной функции над колонкой, то да, должно сработать.

Котяй Негодяй
10.05.2018
07:48:19
Прямо в таком виде.

Yaroslav
10.05.2018
07:51:08
Ну так можно?
https://www.postgresql.org/docs/current/static/datatype-json.html#JSON-INDEXING

Котяй Негодяй
10.05.2018
07:51:30

Антон \ (•◡•) / 1c8SysAdm
10.05.2018
08:31:27

Mike Chuguniy
10.05.2018
09:55:57
Когда у вас в таблице 100500*n записей, то выгоднее, с точки зрения оптимизации, телефон держать не в отдельной сущности, а в денормализованном виде
Это как? В массиве? У меня вот, физической морды лиТСа, три номера (на самом деле четыре, один в планшете, он есть, но только для экстренных случаев, когда оба телефона дома остаются, поэтому я его не считаю) телефона используется. А ещё у людей бывают стационарные телефоны.

Darafei
10.05.2018
09:57:30
это как join, только ты его руками не пишешь и не думаешь, что твои данные всё равно в отдельную toast-таблицу лягут ;)


Mike Chuguniy
10.05.2018
10:08:08
это тонкая материя: баланс между нормализацией данных и денормализацией)
сперва при проектировании стараются максимально все нормализовать, максимально растащить по отдельным таблицам... потом когда приходит что кроме телефона надо хранить еще емейл, два емейла, данные телеги, данные секретаря, еще данные секретаря...еще телефоны и телефоны
не проще ли просто заложить под эти данные jsonb поле в том же контрагенте?
Таблица контактс: ключ, в который помимо всего прочего входит тип контакта: почта, телефон, трещалка (имя протокола, как идентификатор); собственно, сам контакт. Не вижу противоречий и сложностей в использовании.


Amir
10.05.2018
10:13:19
очень много сущностей, через пол года их может быть в два раза больше, из за этого под каждую хотелку флудить новыми таблицами, да еще и inherits ради того что бы максимально нормальную форму поддерживать думаю заблуждением для таблиц в которых может быть лядр строк
например вам надо найти всех контрагентов у которых протокол в таком то диапазоне, телефон начинается на (917) без учета первой цифры, содержат хотя бы 1 почтовый ящик
а это все добро разсбросано по разным таблицам.
это я по вчерашнему собеседнику)

Yaroslav
10.05.2018
10:22:07

Google

Amir
10.05.2018
10:23:04
я про то что телефон это все таки атрибут сущности а не сущность)
но там более специфичные кейсы оказались у автора, поэтому да пусть будет отдельная сущность
но клипать под каждый чих отдельные сущности это все таки неверно)
лучше такие данные хранить в jsonb
или в отдельных колонках если они частые

Yaroslav
10.05.2018
10:28:53

Amir
10.05.2018
10:32:28
если вы боитесь что ктото еще может такой же телефон указать другому контрагенту, то делаете либо констрейн, либо уникальный индекс по номеру телефона, это лучше работает чем содержать отдельную таблицу, в этой отдельной дочерней таблице опять надо содержать свои PK индексы и тд...
какую цель вы приследуете? сберечь место для хранения?

Mike Chuguniy
10.05.2018
10:34:29
У меня дурацкий вопрос, уважаемые коллеги. Есть 9.2 (не пинайте, в наследство досталось, процедура обновления в производстве) от меня требуется выборка ТОП-10 самых нагруженных таблиц по обращениям к ним. Я правильно понимаю, что именно количество обращений к таблице выбрать проблематично, или сижу в глазки развлекаюсь, глядючи в документацию? Т.е. pg_stat_user_tables содержит количество записей в различных разрезах. А есть ли информация по количеству обращений к таблице?

Amir
10.05.2018
10:35:32
у Ярослава телефоны реализованы через inherist таблицы, там думаю связь получается 1 к 1
точнее даже так к одной организации только 1 телефон можно прицепить, но по одному номеру телефона может быть много разных организаций
это какой то неправильный рецепт применения наследования, имхо

Yaroslav
10.05.2018
10:41:36

Mike Chuguniy
10.05.2018
11:55:27
Народ, что, никто не знает, как получить количество обращений к таблице? Или я хочу странного?

Grigory
10.05.2018
11:57:46
pg_stat_all_tables

Mike Chuguniy
10.05.2018
11:58:37
Гриш, ткни носом в соответствующий столбец, плиз. А то я только количество записей в различных разрезах наблюдаю. :(

Google

Mike Chuguniy
10.05.2018
11:59:07
ЗЫ. Пг - 9.2. Тяжёлое наследство, которое я разгребаю.
seq_scan+idx_scan?

Grigory
10.05.2018
12:00:00
Ага

Mike Chuguniy
10.05.2018
12:00:58
Тогда общее количество получается: seq_scan+idx_scan+n_tup_ins+n_tup_del+n_tup_upd?
Потому что базюлька - OLTP, т.е. и чтение, и запись...

Evgeniy
10.05.2018
12:02:17
зачем ты их хочешь всё схлопнуть в некия "обращения"
о чем они тебе расскажут
есть же условно нормальные метрики, сколько раз читали, чем читали, сколько строк на вычитку, сколько вставляли, сколько апдейтили

Yaroslav
10.05.2018
12:04:39

Mike Chuguniy
10.05.2018
12:04:48
А для меня без расшифровки - это именно общее количество.

Evgeniy
10.05.2018
12:05:40
или поставь pg_stat_statements, он тебе напишет запросы и каунт
а ты из запроса таблички надергаешь

Mike Chuguniy
10.05.2018
12:09:36
Мне надо сегодня дать информацию. pg_stat_statement - перезапускать ПГ на проде мне никто не даст.

Alexandr
10.05.2018
12:10:08
Всем привет, подскажите пожалуйста, кто сталкивался с такой ошибкой
cannot execute UPDATE in a read-only transaction
В МАСТЕР базе?

Evgeniy
10.05.2018
12:11:58

Denis
10.05.2018
12:12:16

Evgeniy
10.05.2018
12:12:32
если считать только в тюплях, там есть цифры сколько было насканено каждым методом

Игорь
10.05.2018
12:13:17

Google

Mike Chuguniy
10.05.2018
12:13:23

Yaroslav
10.05.2018
12:14:56

Игорь
10.05.2018
12:17:22
Скорее всего у него баунсер с транзакционным пулингом + SPRING. Еще это пусть посмотрит https://github.com/pgbouncer/pgbouncer/issues/224

Alexandr
10.05.2018
12:27:19

Игорь
10.05.2018
12:28:01
как минимум сразу включите session pooling и дальше разбирайтесь
show default_transaction_read_only;

Yaroslav
10.05.2018
12:30:02
это исключили
Тогда это почти наверняка связано с pgbouncer. У вас transaction pooling?
А вообще, посмотрите ссылки, которые давали выше...

Alexandr
10.05.2018
12:30:21

Yaroslav
10.05.2018
12:33:30

Alexandr
10.05.2018
12:34:10