Jaki jest limit rozmiaru różnych typów danych w Postgresql? I gdzieś widział, że dla character varying(n)
, varchar(n)
n
musi wynosić od 1 do 10485760. Czy to prawda?
Jakie są prawidłowe rozmiary character(n)
, char(n)
i text
?
Jaki jest limit rozmiaru różnych typów danych w Postgresql? I gdzieś widział, że dla character varying(n)
, varchar(n)
n
musi wynosić od 1 do 10485760. Czy to prawda?
Jakie są prawidłowe rozmiary character(n)
, char(n)
i text
?
Odpowiedzi:
Maksymalny rozmiar ograniczonych typów znaków (np. Varchar (n)) w Postgres wynosi 10485760. Możesz to sprawdzić w ten sposób:
create table test(id serial primary key, str varchar(10485761));
ERROR: length for type varchar cannot exceed 10485760
Limit jest zdefiniowany w następującym fragmencie kodu źródłowego (htup_details.h), jednak nie jest wyraźnie wymieniony w oficjalnej dokumentacji:
/*
* MaxAttrSize is a somewhat arbitrary upper limit on the declared size of
* data fields of char(n) and similar types. It need not have anything
* directly to do with the *actual* upper limit of varlena values, which
* is currently 1Gb (see TOAST structures in postgres.h). I've set it
* at 10Mb which seems like a reasonable number --- tgl 8/6/00.
*/
#define MaxAttrSize (10 * 1024 * 1024)
Maksymalna liczba znaków dla zmiennych typów o nieograniczonej długości (tekst, varchar) jest niezdefiniowana. Istnieje limit wielkości w bajtach dla wszystkich typów ciągów :
W każdym razie najdłuższy możliwy ciąg znaków, który można zapisać, to około 1 GB.