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

Значение переменной длины PostgreSQL

В PostgreSQL я использую переменный тип символов. Я не смог найти эту информацию в руководстве по PostgreSQL. Каков максимальный предел символов в характере изменяющегося типа данных?

4b9b3361

Ответ 1

Ссылаясь на документацию, явного ограничения для определения типа varchar(n) не существует. Но:

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

Также обратите внимание на это:

Совет: Нет производительности разница между этими тремя типами, кроме увеличенного пространства для хранения при использовании пустого типа и несколько дополнительных циклов ЦП для проверки длины при хранении в столбец с ограничениями длины. В то время как character (n) имеет производительность преимущества в некоторой другой базе данных систем нет такого преимущества в PostgreSQL; на самом деле символ (n) обычно самый медленный из трех из-за его дополнительного хранения расходы. В большинстве случаев текст или следует использовать символ вместо этого.

Ответ 2

Из документация:

В любом случае, самая длинная строка символов, которая может быть сохранена, составляет около 1 ГБ.

Ответ 3

Тип символа в postgresql

  • различающийся символ (n), varchar (n) = переменная длина с ограничением
  • символ (n), char (n) = фиксированная длина, пустая прокладка
  • text = переменная неограниченная длина

на основе вашей проблемы я предлагаю вам использовать тип текст. тип не требует длины символа.

Кроме того, PostgreSQL предоставляет тип text, в котором хранятся строки любой длины. Хотя текст типа не входит в стандарт SQL, у него также есть несколько других систем управления базами данных SQL.

источник: https://www.postgresql.org/docs/9.6/static/datatype-character.html

Ответ 4

Максимальный размер строки составляет около 1 ГБ. В соответствии с документами docs:

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

Обратите внимание, что максимальное n, которое вы можете указать для varchar, меньше максимального размера хранилища. Хотя этот лимит может варьироваться, при быстрой проверке выясняется, что лимит на postgres 11.2 составляет 10 МБ:

psql (11.2)

=> create table varchar_test (name varchar(1073741824));
ERROR:  length for type varchar cannot exceed 10485760

На практике, когда у вас нет хорошо рационализированного предела длины, он предложил просто использовать varchar, не указав его. Согласно официальным документам,

Если вы хотите хранить длинные строки без определенного верхнего предела, используйте текст или символ, изменяющийся без спецификатора длины, вместо того, чтобы задавать произвольный предел длины.