SourceTable2, ..., SourceTableN] -> [MV1, MV2, ..., MVN] -> Buffer -> DestinationAggTable.
В SourceTable обнаружились записи (несколько тысяч потерянных записей из 150млн успешно дошедших) двухдневной давности, которые не учтены в DestinationAggTable (сравнивал результаты запроса к DestinationAggTable c final и результаты запроса к исходной SourceTable).
Основной подозреваемый - Buffer. Правда, он копит по 16 х 500к записей, что сильно больше потерянного количества.
Второй подозреваемый - MV, но, насколько помню, если бы была ошибка в MV (какие-нибудь некорректные данные, которые нельзя вставить в буфер, например), то эта пачка и в исходную таблицу не вставилась бы.
Третий подозреваемый - собственно, DestinationAggTable. Из возможных ошибок могу нафантазировать только какие-нибудь ошибки мерджа или вставки, хотя такого ещё никогда не видел.
Вопрос: как можно проверить не было ли каких ошибок при вставке в буфер\записи из буфера? Или там перезагрузок? Если в файловых логах, то в каких?
Дело в том, что у меня нет доступа к файловой системе сервера, могу запросить логи через админов, но надо понять что запрашивать.
нет не так ошибки в MV особенно если у вас цепочки MV на исходную таблицу не влияют MV это AFTER INSERT trigger который срабатывает на блок записей при INSERT в таблице которые прописан в SELECT .. FROM для MV
Да, я много раз смотрел и читал то разъяснения Дениса, но с полгода назад я так потерял пару дней исходных данных (не помню только на 19.х или уже на 20.8), когда у меня набор полей в исходной таблице, MV и таблице назначения разъехался, из-за чего запрос в MV стал некорректным. Специально потом не воспроизводил, но галочку себе поставил.
Обсуждают сегодня