Ситуация
Таблица A разделена и состоит из 5 дочерних таблиц: tableA_1, tableA_2, et c. TableA разделен на «state», varchar с низкой мощностью.
TableA имеет столбец с именем «updated_ts», который автоматически заполняется текущей меткой времени по умолчанию.
Следующий запрос используется для показать строки, которые были обновлены с момента последнего выполнения запроса. '2020-07-30 14:22:01' представляет максимальное значение updated_ts, возвращенное в последний раз.
SELECT *
FROM TableA
WHERE updated_ts < '2020-07-30 14:22:01'
ORDER BY updated_ts DESC
Проблема
Проблема в том, что иногда результаты вышеуказанного запроса будут отсутствовать строки, которые были обновлены со значением updated_ts за несколько миллисекунд до отсечки ('2020-07-30 14:22:01'). Это означает, что пропущенная строка еще не была жива в той дочерней таблице, в которой она была, когда предыдущий запрос сканировал эту дочернюю таблицу.
Postgres версия 11. Это наблюдается на реплике, поэтому может быть связано с задержкой репликации.
Решение, которое мне нужно
Я ищу решение, которое позволяет мне запрашивать родительскую таблицу и возвращать результаты из всех дочерних таблиц для указанного c момент времени для системы, такой, что никакие строки не могут быть вставлены в дочерние таблицы с updated_ts
меньше, чем текущий максимум для всех дочерних таблиц.