184 похожих чатов

У меня есть колонка в 100лярдов таблице, которая всегда пустая,

но тем не менее весит 786.82 MiB в сжатом виде. Расскажите плиз про реализацию, почему уменно так?

2 ответов

8 просмотров

Потому что в КХ нет пустых колонок. В них хранится значение по умолчанию для типа. А если она nullable, то рядом ещё хранится файл с признаком null или нет

в КХ не бывает пустых колонок, там всегда значение по умолчанию, и даже null хранится как один байт, 1 / 0 mrk файл тоже не сжат например, он хранит 3 штуки UInt64 на каждую гранулу. 100000000000/8192*3/1024/1024 = 35MB = mrk2 На самом деле шутка в том, что если добавить столбец в таблицу то он не будет занимать ничего. Его просто не будет в старых партах. Есть тикет про то что если весь столбец в парте равен значению по умолчанию, то не нужно его хранить в парте. И если вы думаете что можно сделать как в оракле , типа Null-ы во всех trailing столбцах не занимают место, то нет так нельзя. В столбце надо понимать где начинается следующая строка внутри столбца. CODEC delta, ZSTD помогут сократить

Похожие вопросы

Обсуждают сегодня

И ещё вопрос: можно ли типа как на дос как-то запариться и с помощью прерываний выводить текст, вместо функции printf ?
НѣкъиⰘижєжєиꙁъвьсєсвѣтьноѣсѣтиѥсть•
34
Ладно, ещё тупого спрошу. Код должен банально вывести значение регистра на консоль, на деле же не выводя ничего, просто оставляя нерабочую консоль (открыта, ничего не написан...
НѣкъиⰘижєжєиꙁъвьсєсвѣтьноѣсѣтиѥсть•
25
здравствуйте. пытаюсь проверить, содержится ли в десятичном представлении инта некоторая цифра. совершаю: strstr(x, "5") != NULL) получаю ошибку с фото (заведомо неработающий ...
Катя Шевчук🪇
17
Что там вообще с кроссплатформенностью?
🄼🄰🄺🅉🄰🄸
23
{ char buff = *start; *start = *end; *end = buff; } Из-за этой строчки? Что каждый символ через перем бафф? Как вариант использовать другие со...
Wenks
12
#include <stdio.h> #include <string.h> int main() { char *str = "Hello World"; char *ptr; int i = 0; for(char *end = str + strlen(str) - 1; end = str; ptr++, ...
Wenks
9
а я правильно понимаю что в винде сетевые диски выполнены на уровне юзерспейс драйвера? ну я про те которые webDAV, SMB и прочие высокоуровневые
Mixail Frolov
9
Доброй ночи. Вопрос знатокам. Имеется некая таблица, результат которой выведен в DBGrid на форме. И есть форма, с помощью которой можно как добавить запись, так и отредактиров...
Евгений
28
Кстати, а я вот тут подумал. Допустим, у нас имеется цикл который выполняет огромное количество итераций, но мы хотим, чтобы какие-то действия исполнилось только один раз. В Я...
The Bird of Hermes
23
а всё почему? потому что ассемблер в отличии от яву порождает множество пагубных привычек, среди которых например можно отметить использование глобальных переменных для всего ...
Mixail Frolov
35
Карта сайта