клик же не будет создавать физически данные для старых записей?
Всм? Если добавите столбец еще один, то всем проставится default
Запишется ли? Или клик просто посмотрит, что данных нет и вернет default?
всм, он в этой колонке даст всем default и все. То есть будут данные
Иными словами, альтер многотонной таблички будет идти часами, потому что будут прописываться default?
это же колоночная субд, колонка должна добавиться без проблем с дефолтом. По чату поищите описание от Денни, уже много рза все описал.
Да в том и дело, что хрен найдешь. Это ж чатик, хоть и с неплохим поиском.
из своего опыта, на днях добавлял на терабайтные таблицы UInt32/DateTime и все произошло практически мгновенно
Ну, собственно тогда скорее всего ничего и не пишет физически, а просто возвращает default
думаю, что если на старые данные выполняется селект, то он просто заполняется дефолтом, а на новые и на те на которые пришел мердж - уже физически заполняются.
Вот я тупка. https://clickhouse.com/docs/ru/sql-reference/statements/alter/column/ Добавление столбца всего лишь меняет структуру таблицы, и не производит никаких действий с данными - соответствующие данные не появляются на диске после ALTER-а. При чтении из таблицы, если для какого-либо столбца отсутствуют данные, то он заполняется значениями по умолчанию (выполняя выражение по умолчанию, если такое есть, или нулями, пустыми строками). Также, столбец появляется на диске при слиянии кусков данных
при мержах этот default будет появляться в партах где этой колонки нет (например она была добавлена позже чем парт создался). т.е. default есть всегда, для чисел это 0, для дат 1970, для строк '' вы всего лишь переопределяете в метаданных таблицы этот default, а используется он при мержах и инсертах
нет, метаданные меняются моментально, на диске ничего не меняется
Обсуждают сегодня