Выгрузки отчётов, которые перестали обрываться · Codelabs
RU|EN|KK
← Все кейсы
CASE 12Отчётность на больших таблицах

Выгрузки отчётов, которые перестали обрываться

Кассовая отчётность выгружалась синхронно: сорок с лишним секунд ожидания и обрыв по таймауту на больших периодах. Мы перевели выгрузку в фоновую задачу с индикатором готовности, а чтение — на курсор с постоянным расходом памяти. Заодно научились показывать количество страниц без пересчёта всей таблицы и прыгать на последнюю страницу за секунды.

ОтчётыПроизводительностьДанные

Как это устроено

Выгрузка стала фоновой задачей с индикатором готовности: пользователь не держит вкладку открытой и не ловит таймаут на длинном периоде.

Чтение идёт keyset-курсором с постоянным расходом памяти — размер выборки больше не влияет на потребление. Количество страниц оценивается без полного пересчёта таблицы, с точностью около 0.1%, а переход в конец списка занимает секунды вместо десятков минут.

Совпадение того, что видно на экране, и того, что попало в файл, закреплено автотестом: разойтись незаметно они больше не могут.

В цифрах

  • ·таблица в 90 млн строк
  • ·выгрузка не обрывается по таймауту
  • ·оценка числа страниц с точностью ±0.1%
  • ·совпадение экрана и файла закреплено автотестом

Опишите задачу — ответим, что из неё у нас уже построено