
Fike
17.01.2017
08:05:16
вчерашний разговор об условиях задачи

Dmitry
17.01.2017
08:05:28
скорость с субд вообще помоему на втором месте

Fike
17.01.2017
08:05:34

Vladislav
17.01.2017
08:05:48

Google

Fike
17.01.2017
08:06:10
ну что ты, ты делаешь запрос, чтобы не прочитать из таблицы данные

Vladislav
17.01.2017
08:06:23

Yury
17.01.2017
08:07:01
Прочитает индекс
он не просто почитает, он будет в нём искать причём каждый ключь по отдельности

Vladislav
17.01.2017
08:14:25

Yury
17.01.2017
08:14:58

Vladislav
17.01.2017
08:15:07
и еще
при денормализации будет сплошная таблица фактов, малейшее условие - это скан таблицы

Yury
17.01.2017
08:15:51

Vladislav
17.01.2017
08:15:58
иии?
я так понимаю, что такое индекс и как он работает вам неизвестно

Yury
17.01.2017
08:16:09

Google

Vladislav
17.01.2017
08:16:36

Yury
17.01.2017
08:17:10

Vladislav
17.01.2017
08:18:04
ну т.е. вы понимаете отличие scan от seek, да?

Yury
17.01.2017
08:18:25

Vladislav
17.01.2017
08:19:00
это стандарт как бы

Yury
17.01.2017
08:19:24

Mars
17.01.2017
08:19:38
---
Всем привет. Столкнулся с такой проблемой: после массивного апдейта(каждую запись отдельно, не в транзакции) индекс не достроен. Это я понимаю по выборке сразу после апейтов и через какое то время. Это нормальное поведение? Что посмотреть посоветуете?
Заранее спасибо

Yury
17.01.2017
08:20:23
короче join двух таблиц медленее чем index-scan по денормализованной таблице у которой размер 2х.

Vladislav
17.01.2017
08:20:28
не суть как называть
ну ок
я даже продолжать не буду, если это так в постгрес - это печально
если вы ошибаетесь, то продолжать нет смысла

Fike
17.01.2017
08:21:14
я правильно понимаю, что сейчас спор ведется все еще про то, что прочитать данные из двух таблиц, перекрещенных джойном - это быстрее, чем прочитать те же данные из заранее подготовленной таблицы?

Mike Chuguniy
17.01.2017
08:21:18
Ну ка ну ка, почему же?
пусть данные в денормализованном отношении и в номализованных - одни и те же.
Соответственно, полей, участвующих в во всех и всяческих условиях, одинаковое количество. Только вот в нормализованных отношениях ко всему этому многообразию (или безобразию?) добавляются ключевые поля, по которым джойнятся отношения.

Yury
17.01.2017
08:21:22
конечно, если у вас есть выборка в первой таблице и join со второй будет только один раз... это конечно другой разговор
но мы же говорим про те данные которые имеет смысл денормализовывать

Mike Chuguniy
17.01.2017
08:22:21

Google

Vladislav
17.01.2017
08:22:22

Yury
17.01.2017
08:22:39
+ уникальные ключи

Fike
17.01.2017
08:22:47
там будут ровно те же индексы, что нужны и для выборок по двум таблицам

Vladislav
17.01.2017
08:23:02

Fike
17.01.2017
08:23:06
типа в нормализованной версии я не буду делать индексы по тем полям, по которым я делаю выборки?

Vladislav
17.01.2017
08:23:30
Это повышения формирование таблицы фактов
Вот только таблица фактов в полном виде нужна в редких случаях и обычно там скорость не нужна
денормализация нужна только для olap и подобия

Fike
17.01.2017
08:24:00
то есть при выборках в нормализованных данных я не буду использовать индексы?

Mike Chuguniy
17.01.2017
08:24:29

Yury
17.01.2017
08:24:47
если у тебя практически любой запрос делает join данных в отношениии 1 к 1 то тут и нужна денормализация

Fike
17.01.2017
08:24:48
пока это звучит так

Vladislav
17.01.2017
08:24:53

Fike
17.01.2017
08:25:21
короче, смотри
у меня в приложении есть страница "друзья друзей"
а пользователей я храню в виде 1024-колоночной таблицы, потому что мне по фану степени двойки
для друзей друзей я подготавливаю отдельную таблицу, где у меня всего четыре колонки, и я сразу могу выбирать по пользователю

Google

Fike
17.01.2017
08:26:36
это все еще медленнее, чем джойны?

Vladislav
17.01.2017
08:27:22
невкурил, почему 4, но у тебя либо избыточность данных, либо джойн

Fike
17.01.2017
08:27:51
для запроса "друзья джрузей" у меня избыточность данных, потому что им не нужно оперировать кучей вещей, которые нужны, скажем, для биллинга

Mike Chuguniy
17.01.2017
08:27:58

Vladislav
17.01.2017
08:28:13

Fike
17.01.2017
08:28:24
не-не
давай не про жопу

Аггей
17.01.2017
08:28:29
Мне кажется тут много "дополнительных факторов" - например структура таблиц, помещаются ли индексы в память, если не помещаются - то скорость io и тп. Что быстрее на абстрактном коне в вакууме не скажешь

Fike
17.01.2017
08:28:32
это медленнее или нет?

Vladislav
17.01.2017
08:29:08
это быстрее, только в чтении, в хранении и записи/обновлении ты в жопе
как только появляется новый пользователь - у тебя лишния запись в БД

Yury
17.01.2017
08:29:58

Vladislav
17.01.2017
08:30:09
под словом "запись" я подразумеваю не только сам факт наличия данных, но и процесс

Yury
17.01.2017
08:31:42
ну я вот то же у себя пишу некоторые данные сразу в 4 места (не говоря уже про кеш), но делаю я это раз в 5-10 минут вообще (а не для каждого объекта), а читаю я данные из таблицы до сотни раз в секунду.
Ну вот и бенефит.
у меня с начала всё было нормализованно, после денормализации я смог ускорится где то в 20х раз .

Fike
17.01.2017
08:32:33
про хранение и записи смотри выше про SSOT

Vladislav
17.01.2017
08:33:00
в рамках постгреса может это у вас заебись практика

Google

Yury
17.01.2017
08:33:21
в postgres есть транзакции, ура! :)

Vladislav
17.01.2017
08:33:24
но в рамках архитектуры БД, это полный ппц

Fike
17.01.2017
08:33:37
чувак, я на кассандре вообще пишу, когда у меня нет условий конкретного движка

Vladislav
17.01.2017
08:33:52
молодец, а я пользуюсь БД под проект

Fike
17.01.2017
08:34:07
если ты соизволишь почитать, как сейчас делаются дела в двадцать первом веке - ты узнаешь, что вот так они и делаются

Vladislav
17.01.2017
08:34:27

Fike
17.01.2017
08:34:37
господи, авито - это помойка

Vladislav
17.01.2017
08:34:49

Fike
17.01.2017
08:34:55
а аргумент к авторитету - это худший аргумент на свете

Yury
17.01.2017
08:35:05

Vladislav
17.01.2017
08:35:51
вон, в кликхаус денормализация
а толку
все прекрасно работает, пока в лучшем случае звезда
как только надо написать сложный запрос, получить точное значние или сделать снежинку - мы в жопе

Fike
17.01.2017
08:37:01
началось
anchor model bingo

Vladislav
17.01.2017
08:37:11
а поменять структуру, так это вообще полный анрил

Yury
17.01.2017
08:37:17