
Petr
05.01.2018
17:57:22
почему find за O(N) написано?)

Evgeniy
05.01.2018
17:57:52
хз, думал там бинари серч и будет логарифм
но ты почитай
может там уровни учли

Google

Evgeniy
05.01.2018
17:59:29
но ты можешь пглоадером поставить в мускуль перекладываться на выхи
сам всё проверишь

Petr
05.01.2018
18:02:24
сейчас погуглю на счёт time complexity поподробнее

Evgeniy
05.01.2018
18:04:10
https://www.slideshare.net/matsunobu/myrocks-deep-dive
йошинори почитай еще
или погугли видос еще
заодно про блумфильтр узнаешь гг

Petr
05.01.2018
18:06:06
спасибо!
судя по этой штуке просадка по чтению где-то в три раза
ну значит не O(N) и то хорошо

Evgeniy
05.01.2018
18:09:07
если чо, на этом говне фейсбук сидит
там хорошие инженеры

Petr
05.01.2018
18:10:14
https://github.com/wiredtiger/wiredtiger/wiki/Btree-vs-LSM
вот собственно

Evgeniy
05.01.2018
18:14:01
wiredtiger тоже кстати классные ребята делают

Google

Petr
05.01.2018
18:16:20
ага)
Gin с его fastupdate многоколоночные не поддерживает кстати, насколько я понял

Evgeniy
05.01.2018
18:33:40
ты на джине вообще охуеешь скорее всего
я вообще не знаю почему там фастапдейт включен подефолту

Petr
05.01.2018
18:38:28
:)
хм, а REFRESH MATERIALIZED VIEW CONCURRENTLY удаляет индекс старый сразу же?

Evgeniy
05.01.2018
18:44:20

Petr
05.01.2018
18:45:40
А как он переходит от старого состояния к новому?

Evgeniy
05.01.2018
18:45:58
магия mvcc каталога

Petr
05.01.2018
18:46:23
звучит как будто то что нужно

Evgeniy
05.01.2018
18:46:47
ну это лучше чем копировать табличку, менять местами, вот это всё
но это такое решение которое я не рассматриваю впринципе

Petr
05.01.2018
18:49:08
почему?
если родительскую хранить без индексов и туда вставлять новые пачки
потом обновлять вью
если в этот момент правда доступны старые индексы — это же круто
при условии, что вью не займет места более чем в ≈2 раза больше чем родительская (не учитывая индексы)

Evgeniy
05.01.2018
18:49:46
потому что места x2 и индексы строить долго и дорого
ах да, с рефрешом уже x3
и пока все это рефрешится, ничего сделать нельзя
хорошо что тебе ночь позволяет видимо
но это пока что

Petr
05.01.2018
18:51:07
"копирование таблички" занимает х2 :(

Google

Petr
05.01.2018
18:51:46

Evgeniy
05.01.2018
18:52:00
ты вот опять же думаешь про сейчас, а с темпом твоих вставок, ты подумай что ты скажешь бизнесу через полгода, когда они придут на работу а у тебя там чтото еще ребилдится

Petr
05.01.2018
18:52:14
важен только select
остальных операций юзер не вызывает самостоятельно

Evgeniy
05.01.2018
18:52:18
ты не учитываешь загрузку диска. вымывание кеша
возможно ты реально экономишь там, где не надо
спроси как нибудь у дира сколько стоит час простоя людей и бизнеса, которые смотрят в этот каталог
я серьезно

Petr
05.01.2018
18:53:58
всё катится в сторону myrocks?)

Evgeniy
05.01.2018
18:54:06
возможно это будет стоить дороже семи серверов
во-первых на майрокс я бы посмотрел очень внимательно, пока у тебя пок и выхи, это бесплатно

Petr
05.01.2018
18:54:59
если оно совсем остановится и не ночью — будет правда дорого стоить

Evgeniy
05.01.2018
18:57:12
значит вариант с бесконтрольным ребилдом тебе не подходит
если только ночь не будет удлиняться

Petr
05.01.2018
18:58:57
уговорил на счет потестить myrocks, спасибо!
мне самое главное чтобы решение еще не содержало костылей каких-то
а копирование таблиц к этому относится
она ещё якобы мало весит аля кликхаус

Сергей
05.01.2018
19:01:04
попробуй кассандру

Evgeniy
05.01.2018
19:02:10
ну нет, кликхаус жмет колоночки, тут никакие строковые не обгонят

Сергей
05.01.2018
19:03:36
не понял

Evgeniy
05.01.2018
19:03:52
я про "она ещё якобы мало весит аля кликхаус"

Google

Сергей
05.01.2018
19:04:03
ааааа ну ок

Evgeniy
05.01.2018
19:04:24
против касандры тут особо не против, главное рид кворум не включать
но у человека и сервер один

Сергей
05.01.2018
19:04:37
грустно когда сервер один ?

Petr
05.01.2018
19:04:51
а что там такого приятного в кассандре с индексами для такой задачи?

Evgeniy
05.01.2018
19:04:56
ничего
еще и тормозить будет

Petr
05.01.2018
19:05:30
допустим через два месяца дадут второй, но это не точно?

Evgeniy
05.01.2018
19:07:04
из плюсов касанды или хбезйа или еще чего-нибудь такого будет одна вещь
можно построить сегмент с индексами отдельно и подложить под базку
в теории
но это совсем другой пайплайн работы, как с копированием таблички, только побигдачному

Petr
05.01.2018
19:08:44
кстати, в myrocks обязательно наличие примарикей? в основной родительской таблице сейчас его нет, как и ничего остального, что могло было бы быть точно уникальным

Сергей
05.01.2018
19:10:30
ну да для использования касандры надо очень грамотно подойти к проектированию модели данных, по сути идея следующая "под каждый запрос своя таблица, денормализуй все что можно"
ну и да все это шардировано

Petr
05.01.2018
19:11:47
слишком сложно :(

Evgeniy
05.01.2018
19:12:06
без PK lsm не работают, заводи сиквенс если лень
но скорее всего у тебя batch id + entity найдется
кстати, чото я не вижу https://github.com/facebook/mysql-5.6/wiki/MyRocks-limitations требования

Petr
05.01.2018
19:16:36
еще думаю все-таки над тем чтобы сделать две таблички:
первая со старыми данными
вторая горячая куда лить новые пачки
если вторая привысит например 40млн, то залить её в основную, а отсюда эти данные очистить
бред?)

Evgeniy
05.01.2018
19:17:14

Petr
05.01.2018
19:17:26
скорее всего 40млн новых данных у меня будет накапливаться максимум раз в месяц или даже реже

Google

Evgeniy
05.01.2018
19:17:44

Petr
05.01.2018
19:17:59
только один хрен вставка что туда что туда времени занимает почти одинаково
логарифм там 30 против 25
прирост будет в скорости 20% :(
вопрос: в транзакцию постгреса умещаются 40млн строк?)
и пока транзакция не commit, индексы же не перестраиваются?

Evgeniy
05.01.2018
19:22:43
на коммит - уже все перестроено

Petr
05.01.2018
19:22:50
а, бред, толку не шибко

Evgeniy
05.01.2018
19:23:24
mvcc

Petr
05.01.2018
19:23:40
и почему бы юзеру не использовать этот откат пока грузится что следует...

Evgeniy
05.01.2018
19:24:04
поясни

Petr
05.01.2018
19:24:19
ну допустим

Evgeniy
05.01.2018
19:24:46
допустим ты нажал коммит после инсерта и только тогда вставляются данные в индексы?

Petr
05.01.2018
19:24:53
в транзакции:
1. удалить индексы
2. залить 40млн
3. построить индексы
4. commit
сможет ли до commit юзер использовать предыдущий индекс?

Evgeniy
05.01.2018
19:25:52
я не понимаю почему ты не понимаешь что перестраивать индексы это бред

Petr
05.01.2018
19:26:20
вопрос скорее к понимаю mvcc был

Evgeniy
05.01.2018
19:27:05
а, так зайди проверь из двух сессий

Petr
05.01.2018
19:27:45

Evgeniy
05.01.2018
19:28:13
ну вот я нажал в одной сессии
postgres=# drop index test_v_idx;
DROP INDEX
во второй
postgres=# explain analyze select * from test where v = 1;
ждет