До merge запрос может вернуть несколько версий одной записи. Для актуального результата используют FINAL либо явный выбор максимальной версии по ключу.
В таблицу на ReplacingMergeTree залили данные; что будет при чтении, если merge ещё не произошёл, и как получить актуальную версию записей?
До merge запрос может вернуть несколько версий одной записи. Для актуального результата используют FINAL либо явный выбор максимальной версии по ключу.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
До merge запрос может вернуть несколько версий одной записи. Для актуального результата используют FINAL либо явный выбор максимальной версии по ключу.
ReplacingMergeTree объединяет строки с одинаковым ORDER BY; при наличии version выбирает запись с максимальной версией. Фоновые merges не гарантируют немедленную дедупликацию. SELECT ... FROM table FINAL выполняет необходимое объединение при чтении; альтернативой может быть argMax по версии с корректной обработкой равенства и удалений. Не заменяйте это постоянным принудительным OPTIMIZE FINAL.
Источник: clickhouse.com.