Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Firebird, Interbase > Влияние размера полей на размер файла


Автор: gesper 22.11.2023, 17:59
Подскажите, если поле varchar имеет длину 250 или 128 символов, то размер конечного файла с заполненными полями будет одинаковый или нет?
Файл согласно размерности поля размещается сразу по емкости, или параметр длины просто ограничивает максимум?

Автор: Akina 22.11.2023, 19:42
Цитата(gesper @  22.11.2023,  18:59 Найти цитируемый пост)
Файл согласно размерности поля размещается сразу по емкости, или параметр длины просто ограничивает максимум?


VARCHAR == CHARACTER VARYING

Поле занимает ровно столько, сколько нужно для размещения значения (с учётом байта длины).

Если необходимо поле, под которое резервируется сразу максимальное пространство - используется тип CHAR.
Цитата(gesper @  22.11.2023,  18:59 Найти цитируемый пост)
если поле varchar имеет длину 250 или 128 символов, то размер конечного файла с заполненными полями будет одинаковый или нет?


Мало данных для однозначного ответа. Каков размер записи? каков размер блока?

Автор: gesper 22.11.2023, 20:53
Цитата(Akina @  22.11.2023,  19:42 Найти цитируемый пост)
Мало данных для однозначного ответа. Каков размер записи? каков размер блока?

Почему? Если взять слово "Арбуз" и две БД с 1 млн. строк. Но у них отличие будет в заданном кол-ве символов в поле. Физический размер на диске будет одинаковый или нет? Причем тут блок и запись? В самой идеологии БД какую цель несет этот размер.
Вопрос больше из-за того, насколько сильно нужно делать поля малой длины(32,64,128), если это не влияет на размер файла. 

Автор: Akina 23.11.2023, 19:41
Цитата(gesper @  22.11.2023,  21:53 Найти цитируемый пост)
Если взять слово "Арбуз" и две БД с 1 млн. строк.

Одна таблица в базе, в таблице одно поле, и во всём миллионе записей в нём слово "Арбуз"? ну что за бред-то...

Кстати, вот именно это - какая БД будет больше и во сколько раз, если в ней одна таблица с описанными структурой и данными,- быстрее проверить на практике, чем спрашивать.

Автор: gesper 24.11.2023, 02:44
Т.е. это нормально по твоему не разбираясь в архитектуре БД писать какие то "умные" посты, называть бредом разжеванный до мелочей вопрос, а потом посылать человека "иди разбирайся сам"?
Ясно почему форум дохлый.

Автор: Akina 24.11.2023, 08:13
Нет, вот что непонятно во фразе "Поле занимает ровно столько, сколько нужно для размещения значения (с учётом байта длины)."?

Задавая вопрос, будь готов понять ответ. Не понял - переспроси, точно указав то, что непонятно. А возмущаться, что не понял - так кто ж в том виноват-то?

Цитата(gesper @  22.11.2023,  21:53 Найти цитируемый пост)
Причем тут блок и запись?


Файл базы делится на блоки. В блоке размещаются метаданные либо отдельные записи либо блоки индекса. Причём не все записи в блоке - действующие, пространство, занимаемое удалёнными записями, не "схлопывается" сразу, и не переиспользуется до расщепления либо слияния блока. Обычно процент заполнения по умолчанию поддерживается на уровне 85-90%, но в интенсивно модифицирующейся БД может опускаться аж до 40-45%, а порой и ещё ниже.

И да - без внимательного чтения документации это можно лишь узнать и запомнить, но не понять.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)