
Alex
06.01.2018
07:00:57

Petr
06.01.2018
07:01:11
я забыл пока спал ? честно
началась всё с того, чтобы незаметно для юзера пересчитать индексы при вставке большой пачки данных
сам юзер делает только селекты
вставлять сразу в таблицу где индексы — дороговато (а у меня еще по определению импорт из csv идёт)

Andrey
06.01.2018
07:01:56

Сергей
06.01.2018
07:01:59
а так называемый sharding key возможно извлечь из этих данных?

Google

Сергей
06.01.2018
07:02:16
о
еще вопрос
а ElasticSearch не рассматривали?

Petr
06.01.2018
07:02:30

Сергей
06.01.2018
07:02:38
ElasticSearch

Petr
06.01.2018
07:02:43

Alex
06.01.2018
07:02:52
Наркомания какая то, извините

Сергей
06.01.2018
07:02:53
он точно ищет очень быстро

Petr
06.01.2018
07:03:12

Andrey
06.01.2018
07:03:40
Я втавки данных вообще пока не касался. Я пока про поиск говорю.

Сергей
06.01.2018
07:03:44
вы сможете вставлять редко и пачками сразу на несколько машинах то есть мултимастер

Alex
06.01.2018
07:04:12

Petr
06.01.2018
07:04:25

Google

Andrey
06.01.2018
07:04:47

Petr
06.01.2018
07:04:52

Сергей
06.01.2018
07:05:15
надо требовать
либо скорость вставки не столь критична

Petr
06.01.2018
07:05:49
главное чтобы юзер её не заметил

Alex
06.01.2018
07:06:39

Petr
06.01.2018
07:06:43
с него будет довольно данных, актуальных на прошлый месяц

Alex
06.01.2018
07:06:52
Это троллинг такой ?

Petr
06.01.2018
07:07:10
???
что именно вам не ясно?

Andrey
06.01.2018
07:07:42

Alex
06.01.2018
07:07:52
Неважно откуда они поступают

Petr
06.01.2018
07:08:46

Alex
06.01.2018
07:09:10

Petr
06.01.2018
07:09:35

Google

Petr
06.01.2018
07:09:52
Партиции.
скорость поиска в моем случае упадет на два порядка и более

Alex
06.01.2018
07:10:12

Petr
06.01.2018
07:10:51

Alex
06.01.2018
07:11:23

Petr
06.01.2018
07:11:49
отчего же? 500 партиций — вот вам и 500 индексов

Alex
06.01.2018
07:11:58
И что ?
У вас скорее индексы в партициях не работали

Petr
06.01.2018
07:13:19
при равномерном распределении это O(log(N)) против O(K*log(N/K)), где K есть кол-во партиций
теперь представьте во сколько раз (≈) это медленнее

Alex
06.01.2018
07:15:19

Petr
06.01.2018
07:15:32
Ну так себе утверждение
оно достаточно примерное, да;
но когда видно разницу на несколько порядков — становится очевидно, что это действительно гораздо (неприемлемо) медленнее
и это утверждение касательно select, кстати

Andrey
06.01.2018
07:16:46

Petr
06.01.2018
07:17:31

Alex
06.01.2018
07:18:17
Может пересмотреть схему данных ?

Andrey
06.01.2018
07:18:18
Ну и что. Возможно, перед первым тестом база была прогрета (нужные блоки были в shared buffers), а второй раз все данные читались с диска.

Petr
06.01.2018
07:20:02
под "абсолютным" разумеется я подразумевал прилагательное для усиления того факта, что данные из разных частей таблицы примерно одинаково в равной мере актуальны для селектов

Andrey
06.01.2018
07:20:28
И все-таки, сравнивали или нет?

Google

Petr
06.01.2018
07:20:44

Alex
06.01.2018
07:21:31
Если смотреть в сторону какого нить data vault или anchor model

Andrey
06.01.2018
07:22:28
нет
Тогда что вы сравнивали? Просто время выполнения? Планы запросов то хоть смотрели?

Petr
06.01.2018
07:22:33
Андрей, немного не понимаю о чем вы намекаете в рамках сравнения скорости select между 500 партициями и одной — разница очевидна

Andrey
06.01.2018
07:28:32

Petr
06.01.2018
07:29:59
как я писал выше, нельзя в данной задаче отсечь лишние партии из-за того что нужно обязательно заглянуть в каждую (и партиции никак нельзя разбить таким образом, чтобы достичь обратного эффекта)
данных надо прочитать не столько же, все таки это бинарное дерево (деревья)

Andrey
06.01.2018
07:33:28

Petr
06.01.2018
07:34:56
когда это btree (именно его используют сейчас в основном) перестало быть бинарным?

Alex
06.01.2018
07:35:14
Оно им и не было
Вроде

Petr
06.01.2018
07:35:49
ну вы что, господа
тогда бы и логарифма по двойке не было
разве что там может быть более чем два потомка, но суть это не меняет

Andrey
06.01.2018
07:39:07
Но суть не в этом. Я бы все равно сравнил чтения с диска.
Я попробую вечером это сделать, сейчас нет базы под рукой. Вы бы хоть намекнули на свою структуру данных. Ечли детали раскрывать нельзя, может хотя бы на аналогии какой-то.

Petr
06.01.2018
07:40:39

Google

Alex
06.01.2018
07:41:22
Хотя бы типы по которым индексы
И примерную селективность данных

Petr
06.01.2018
07:42:26

Andrey
06.01.2018
07:43:40
Строки все без ограничения длины?

Petr
06.01.2018
07:44:24

Andrey
06.01.2018
07:45:29
верно
А в реальности максимальные длины какие?

Petr
06.01.2018
07:45:55
индексы:
1. A1+A2+A3
2. A1+B1+B2+B3
3. A4
4. A5
5. A6
6. A7
7. A8

Andrey
06.01.2018
07:45:59
Есть ли не ASCII символы?

Petr
06.01.2018
07:46:47

Andrey
06.01.2018
07:48:07
Поскольку у вас очень много строк, есть места, где стоит сэкономить: 1) почитайте про выравнивание данных в tuple 2) varchar длиной до 126 включительно экономит место в заголовке 3) collate C для строк экономит место в данных и в индексах

Petr
06.01.2018
07:49:55
да, еще в A5,...,A8 частенько бывают NULL
это тоже надо учитывать

Andrey
06.01.2018
07:50:29

Petr
06.01.2018
07:50:42
да, мультиколумн

Yaroslav
06.01.2018
09:07:20

?
06.01.2018
09:30:20
Столбцы через андер или кэмэл? Сорри за холиварный вопрос

Yaroslav
06.01.2018
09:34:28

Denis
06.01.2018
10:10:44
Ну и ещё - вам может подойти brin индекс, раз у вас 1ккк записей. И обязательно учитывайте выравнивание и первыми пустите smallint, а потом уже varchar. Плюс вопрос - у вас когда проблемы возникают? При селектах? При вставке данных за месяц?