Подтвердить что ты не робот

Какова максимальная длина varchar (n) в postgresql 9.2 и которая лучше всего использовать varchar (n) или текст?

Привет, я использую postgresql 9.2 и хочу использовать varchar (n) для хранения какой-либо длинной строки, но я не знаю максимальную длину символа, которую поддерживает varchar (n). и какой из них лучше использовать, поэтому не могли бы вы предложить мне? Спасибо

4b9b3361

Ответ 1

tl; dr: 1 GB (каждый символ (действительно: код) может быть представлен 1 или более байтами, в зависимости от того, где они находятся на плоскости юникода - при условии, что база данных, кодированная UTF-8). Вы всегда должны использовать тип данных text для персональных данных произвольной длины в Postgresql.

Объяснение: varchar(n) и text используют один и тот же тип хранилища (varlena): массив байтов переменной длины с 32-разрядным счетчиком длины. Для поведения индексирования text могут даже иметь некоторые преимущества в производительности. В Postgres считается лучшей практикой использовать тип text для новой разработки; varchar(n) остается для стандартных причин поддержки SQL. NB: varchar() (с пустыми скобками) является псевдоним Postgres для text.

См. также: http://www.postgresql.org/about/

Ответ 2

Согласно официальной документации (http://www.postgresql.org/docs/9.2/static/datatype-character.html):

В любом случае самая длинная строка символов, которую можно сохранить, составляет около 1 ГБ. (Максимальное значение, которое будет разрешено для n в объявлении типа данных, меньше этого. Менять это было бы бесполезно, поскольку в многобайтовых кодировках число символов и байтов может быть совершенно другим. Если вы хотите сохранить длинные строки без определенного верхнего предела, используйте текст или символ, изменяющийся без спецификатора длины, вместо того, чтобы составлять произвольный предел длины.)

Поиск в Интернете показывает, что максимально допустимое значение варьируется в зависимости от параметров установки и компиляции, некоторые пользователи сообщают максимум о 10485760 символах (ровно 10 МБ, при условии фиксированной кодировки 1 байт на символ).

Под "параметрами установки и компиляции" я подразумеваю, что вы всегда можете собрать PostgreSQL из исходного кода самостоятельно, а перед компиляцией PostgreSQL для создания собственного сервера базы данных вы можете настроить способ хранения текста, чтобы изменить максимальное количество, которое вы можете сохранить - но если вы это сделаете тогда это может означать, что у вас могут возникнуть проблемы, если вы попытаетесь использовать файлы базы данных с "обычной" ненастроенной сборкой PostgreSQL.