
Petr
05.01.2018
16:59:40
то бишь пока новый строится -- юзать старый, в котором хранятся строки до новой пачки insert
иными словами индексы с ручным рефрешем
при аксиоме что delete не будет
и update
:)

Google

Evgeniy
05.01.2018
17:01:20
тут есть проблема с инвариантом "индекс всегда смотрит на живой tid"
проект с ним уже 30 лет живет
книжник предлагал решить проблему через частичный индекс
поэтому я тебя к нему отправлял

Petr
05.01.2018
17:02:26

Evgeniy
05.01.2018
17:02:56
запрос придется чутка править
чтобы where на батч айди добавить

Petr
05.01.2018
17:03:47
на самом деле у меня ещё возникла "гениальная идея" сделать две партиции, т.к. основной массив данных загружен будет изначально
и вставка новых пачек -- достаточно редкое явление: может раз в неделю или даже месяц

Evgeniy
05.01.2018
17:03:55
ну и тут жопа что каждый раз придется всю таблицу сканить чтобы найти эти штуки

Petr
05.01.2018
17:04:09

Evgeniy
05.01.2018
17:04:11
там был патчик чтобы новый индекс искать по существующему индексу
короче, если тебе реально важно, тебе надо идти в постгреспро
а если нет, то никто ничего не будет делать

Petr
05.01.2018
17:04:57

Google

Evgeniy
05.01.2018
17:05:00
ну или в enterprisedb
заказывать патчи

Petr
05.01.2018
17:05:58
мои руки не настолько длинные к сожалению

Evgeniy
05.01.2018
17:07:26
ну хз, если есть 1ккк данных, обычно есть бабки на патчик
там ценник гуманный
главное понять что ты хочешь

Petr
05.01.2018
17:08:38
сейчас сроки поджимают и ресурсов на такие процедуры мне не выделено и не предвидится до запуска самой системы
через пару месяцев после релиза -- мб
проект только заводится заново если вкратце

Evgeniy
05.01.2018
17:09:50
ок ок

Ivan
05.01.2018
17:10:09
Надо как следует объяснить, в чем идея. Можно даже рассказать её в блицдокладе на pgconf.ru. Если (если) хорошая вещь, можно сделать.

Petr
05.01.2018
17:12:24

Evgeniy
05.01.2018
17:16:11
Ivan, проблема примерно как в треде Книжника [HACKERS] Batch update of indexes
он в нем предлагает делать частичные индексы, которые достраиваются после заливки данных
одна из проблем с частичными индексами - куча доработок для оптимизатора чтобы он их брал
но можно было бы сделать аналог alter index set invalid, но наоборот:
чтобы использовался для запросов, но не обновлялся на лету
например alter index set freeze
после заливки данных сказать ему анфриз, чтобы как в патче выше влить в него свежие батч
ну или ждать колу, кажется так называлось lsm от Насти

Petr
05.01.2018
17:17:47
@netneladno 20:16 начались билдиться индексы с мемом 4гб

Ivan
05.01.2018
17:19:11
Ок, обсудим это с Книжником и другими. Кола пока приостановилась.

Evgeniy
05.01.2018
17:21:21
кола ждет плагабл стореджа?
или просто нафиг

Ivan
05.01.2018
17:24:21
Нет,плагбл ей не нужно. Настя сейчас занимается инкрементальным бэкапом.

Petr
05.01.2018
17:26:26
у меня складывается ощущение, что аля "alter index set freeze" сделать не такая катастрофическая задача
но самому менять что-то в коде постгреса -- боюсь костылей

Evgeniy
05.01.2018
17:30:28
задача нормальная вообще, нюансов с не забыть тюплю после анфриза море
+ такого никогда не было, типа влил данные но через часть индексов они недоступны

Google

Petr
05.01.2018
17:30:46
с другой стороны -- "заморозить" индекс мало, нужно ещё чтобы была возможность собирать новый индекс, а пока он собирается -- использовать тот "замороженны", т.е. что-то типа кешированного индекса

Evgeniy
05.01.2018
17:30:47
срача будет море

Petr
05.01.2018
17:32:00
отчего же?
насколько я знаю, сейчас многие ради этого не брезгуют дубликатом таблицы (и последующим переключением), а это неплохой % времени и лишней памяти

Evgeniy
05.01.2018
17:32:53
ну потому что дубликат таблицы говорит что ты вгружал в А, а читал из Б
потом поменял
а тут вгружал в А, читал из А, но не видел
причем от плана к плану это меняется
используешь такой индекс - видишь батч, другой - не видишь
тут получается надо будет не индекс морозить, а всю таблицу
иначе вообще конфуз

Petr
05.01.2018
17:34:30
когда индекс отправляем в "кеш" -- никакой заморозки вроде не просится
а вот когда началось построение нового - разумеется табличку надо заморозить на всё кроме select

Darafei
05.01.2018
17:34:41
Это на fastupdate похоже

Evgeniy
05.01.2018
17:35:01
похоже
такой вариант тоже обсуждался в треде
типа инсерт буфер для бтрии

Petr
05.01.2018
17:36:07
это что за штука такая? не видел

Evgeniy
05.01.2018
17:36:21
в gin индексе
или в мускуле)
но как по мне такое лучше всего решается лсм
там тебе и свой индекс на микробач, и блум фильтр, и компакшн в фоне

Petr
05.01.2018
17:38:48
LSM-tree ?

Evgeniy
05.01.2018
17:38:52
еп

Google

Evgeniy
05.01.2018
17:39:27
myrocks возьми и не парься

Petr
05.01.2018
17:39:29
ну там же тоже несколько деревьев насколько я понимаю
итого просадка на K

Evgeniy
05.01.2018
17:39:46
там несколько уровней деревьев да
которые мержатся
и которые в фоне сливаются
все как ты хочешь
сперва чтение медленно как с партициями - надо сходить в кучку файлов

Petr
05.01.2018
17:40:24

Evgeniy
05.01.2018
17:40:28
а потом быстрее

Petr
05.01.2018
17:40:38
у меня мультиколоночные индексы

Evgeniy
05.01.2018
17:40:52
вот ты зря, mysql за последние 4 года вырос так, что ппц

Petr
05.01.2018
17:41:05

Evgeniy
05.01.2018
17:41:10
а где написано что майрокс не может мультиколумн?

Petr
05.01.2018
17:42:16
хм :)

Evgeniy
05.01.2018
17:45:00
когда вольются слои
надо глянуть можно ли форсить мажор компакшон
вообще если у тебя поинт селекты, то не вижу проблемы с использованием мускуля
там конечно свои нюансы бывают

Google

Evgeniy
05.01.2018
17:46:48
но где их нет

Petr
05.01.2018
17:47:18
Так, а если на примере:
в пзу уровне у нас допустим 700кк записей
в озу уровень я вставил пачку 30кк (и она туда поместилась)
1. данные из озу ещё не скочевали в пзу -- какая асимптотика поиска по такому "индексу"?
2. все данные перекочевали в пзу -- будет ли тут чистый логарифм?

Evgeniy
05.01.2018
17:47:18
с версии 3.8 уже думаю монгу всем советовать

Petr
05.01.2018
17:48:54
напомню также, что у меня по меньшей мере 7 индексов, среди которых 2 -- мультиколумн

Evgeniy
05.01.2018
17:51:25
блин, пытаюсь нагуглить рид паф
ничего сходу хорочего не нашел

Petr
05.01.2018
17:51:43
к тому же сервер может бабахнуть и всё из оперативки полетит как из редиса( и фиг что потом разберешь

Evgeniy
05.01.2018
17:51:58
надо прочитать N уровней, там сортированые данные - логарифм будет
но не "чистый"

Petr
05.01.2018
17:52:13
тогда вопрос на сколько "грязный" :)

Evgeniy
05.01.2018
17:52:23
когда пишешь - и л0 компакшн не успел, читаешь еще больше
грязный - не больше четырех уровней
примерно как бтрии будет в этом плане, только в бтрии часто кешированый сверху

Petr
05.01.2018
17:53:11
пока очень нравится что там данные вставляются сортированными пачками, звучит хорошо

Evgeniy
05.01.2018
17:53:14
но на линк бенче (поинт лукапы) майрокс ебет иннодб
извини, но сегодня тебе уже придется самому искать презенташки и вики

Petr
05.01.2018
17:54:30
ещё немаловажный момент: выборка иногда может возвращаться где-то по сотне строк

Evgeniy
05.01.2018
17:55:10
ну и ренж сканы там ок - сортировка ж

Petr
05.01.2018
17:57:11
хм