Перебор больших объемов данных в InfluxDB - PullRequest
0 голосов
/ 10 мая 2019

Я ищу эффективный способ перебора полных данных таблицы InfxDB с ~ 250 миллионами записей. В настоящее время я разбиваю данные на страницы с помощью предложений OFFSET и LIMIT, однако для более высоких смещений это занимает много времени.

SELECT * FROM diff ORDER BY time LIMIT 1000000 OFFSET 0

занимает 21 секунду, тогда как

SELECT * FROM diff ORDER BY time LIMIT 1000000 OFFSET 40000000

занимает 221 секунду.

Я использую оболочку Python effxdb для отправки запросов.

Есть ли способ оптимизировать это или транслировать всю таблицу?


ОБНОВЛЕНИЕ: запоминание временной метки последних полученных данных и последующее использование WHERE time> = last_timestamp в следующем запросе значительно сокращает время запроса для более высоких смещений (время запроса всегда составляет ~ 25 секунд). Однако это довольно громоздко, потому что, если две точки данных совместно используют одну и ту же временную метку, некоторые результаты могут присутствовать на двух страницах данных, которые необходимо как-то обнаружить.

1 Ответ

0 голосов
/ 15 мая 2019

Вы должны использовать Непрерывные Запросы или Kapacitor. Можете ли вы рассказать о своем сценарии использования, что вы делаете с потоком данных?

...