Распределение памяти типа данных строки Postgres - PullRequest
1 голос
/ 08 октября 2010

Мы работаем с Postgres 8.3.3, и документация (http://www.postgresql.org/docs/8.3/static/datatype-character.html) оставляет мне несколько вопросов о том, как распределено хранилище.

Для целей этого обсуждения я бынравится придерживаться предположения, что символ = 1 байт.

Я понимаю, что символы (n) пустые, так что у вас всегда хранится n байтов.

Если длина вашего символа (n)> 126 символову вас есть служебная информация 4 байта (предположительно для хранения длины), в противном случае служебная информация составляет 1 байт.

Мне интересно, что происходит с varchar (n).

Если яиспользуйте varchar (255) и сохраните в нем 4-символьную строку, есть ли у меня 4 байта для строки и 4-байтовые служебные данные, или у меня есть только один байтовый заголовок, пока я не достигну ограничения в 126 символов?Гуглил и нигде не могу найти это документально.

Есть мысли?

1 Ответ

2 голосов
/ 10 октября 2010

Длина данных, которые вы храните, контролирует накладные расходы, а не максимальную длину столбца.Таким образом, у вас есть один байт, пока вы не достигнете 126.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...