Что нужно от источника, чтобы уйти от полной перезагрузки таблицы
Таблица заказов в источнике — около 1.5 млрд строк. Сейчас она каждую ночь перезаливается целиком, загрузка идёт 3 часа и не укладывается в окно до утреннего SLA. Заказы не только создаются, но и меняют статус в течение месяца.
Что в первую очередь нужно от источника, чтобы перейти на инкрементальную загрузку?
- Достаточно фильтра по дате создания заказа created_at: новые строки будут доезжать каждую ночь, а объём загрузки станет в сотни раз меньше полной перезаливки.
- Надёжный признак изменения строки (updated_at, номер транзакции или журнал CDC) плюс ключ, по которому изменившуюся строку можно обновить в приёмнике.
- Индексы по всем колонкам таблицы источника: тогда любой инкрементальный запрос отработает быстро и трёхчасовое окно загрузки перестанет быть проблемой.
- Достаточно читать источник порциями через ORDER BY id LIMIT, запоминая последний прочитанный id, — это и есть инкрементальная загрузка.
