|
Стоит ли использовать BRIN индекс при таймсериях в разрезе по аналитике?
|
|||
---|---|---|---|
#18+
PostgreSQL осваиваю всего несколько недель, так что больно не бейте, пожалуйста... Имеется миллиард записей, накапливаемых уже несколько лет, вида (CarID int, OperDate timestamp, ... ) Обычно, записи приходят по возрастанию OperDate, но бывают исключения, когда записи запаздывают на несколько суток. Выборка из таблицы всегда выполняется в разрезе по условия CarID=AnyCarID AND OperDate BETWEEN FromDate AND ToDate. Возможны дополнительные фильтры по иным полям, но только в сочетании с данным условием. То есть, индекс требуется именно (CarID, OperDate) но никак не наоборот (количество уникальных CarID около 100 тыс.) B-Tree индекс успешно справляется с задачей, но имеет огромные размеры и медленно обновляется. Появилась мысль попробовать BRIN индекс, но непонятно, насколько сильно будет падать его производительность со временем и что делать с таблицей для оптимизации BRIN индекса. Если бы записи были нужны без первичного разреза по CarID, то вопроса бы не было. А так я весь в сомнениях... Может кто-то поделиться опытом? Заранее благодарен. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2020, 09:52 |
|
Стоит ли использовать BRIN индекс при таймсериях в разрезе по аналитике?
|
|||
---|---|---|---|
#18+
ptr128 То есть, индекс требуется именно (CarID, OperDate) но никак не наоборот (количество уникальных CarID около 100 тыс.) Не имеет значения для brin. brin в вашем случае записи (по большей части скоррелированной по датам) хорошо отработает по OperDate, но плохо по CarID т.к. префиксного поиска в brin нет. Тут собственно только пробовать. Обычно brin несколько медленнее, но кардинально компактнее и потому удобен для более редких обращений к архивным данным. К слову об архивных данных, вам возможно сильнее поможет партицирование по месяцам. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2020, 11:32 |
|
|
start [/forum/topic.php?fid=53&fpage=30&tid=1994767]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
31ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 128ms |
0 / 0 |