Каков максимальный размер первичного ключа в Firebird? - PullRequest
5 голосов
/ 23 декабря 2009

Мне нужно установить поле Varchar (255) в качестве первичного ключа таблицы базы данных в Firebird 2.1.

Я получаю сообщения об ошибках о том, что размер поля слишком велик. Я использую UTF8 в качестве набора символов и размер страницы по умолчанию 4096.

Возможно ли сделать это в Firebird? Мне нужно убедиться, что этот столбец уникален.

Ответы [ 3 ]

8 голосов
/ 18 июня 2011

Как объяснено, максимальный размер ключа составляет 1/4 от размера страницы, но из Справочного обновления Firebird (здесь) максимальная длина индексируемой строки в байтах на 9 меньше максимальной длины ключа. И UTF8 в Firebird хранится внутри как 4 байта / символ .

Таким образом, максимальная длина UTF8 в базе данных размером 4096 страниц составляет 253 символа (4096/4 -9 = 1024 -9 = 1015, ограничение 253 * 4 = 1012). Поэтому, если вам нужна строка большего размера, вам нужна база данных большего размера (даже если вы используете Firebird 2.5.x).

1 голос
/ 23 декабря 2009

Согласно FirebirdFAQ максимальный размер ключа в Firebird 2.x составляет одну четвертую от размера страницы. Если размер вашей страницы составляет 4096 байт, максимальный размер ключа составляет 1024 байт.
Varchars UTF8 резервируют полные 32-битные на символ, даже если он может занимать меньше места. Таким образом, varchar (255) в UTF8 имеет размер 1020 байт. Я не знаю, почему он достигает предела, но в любом случае я бы увеличил размер страницы или попробовал varchar (254).

0 голосов
/ 24 декабря 2009

просто сделайте gstat d: \ path \ database.fdb

вы получите что-то вроде этого для вашего индекса:

> Index CLIENT_IDX (2) 
>         Depth: 3, leaf buckets: 545, nodes: 138523 
>         Average data length: 10.12, total dup: 13873, max dup: 645 
>         Fill distribution: 
>              0 - 19% = 0 
>             20 - 39% = 0 
>             40 - 59% = 0 
>             60 - 79% = 0 
>             80 - 99% = 545

если глубина больше 3: вам придется увеличить размер страницы. Это то же самое, что Дуглас Тоси скажем.

Это очень хорошо видно в таких инструментах, как полное издание IBExpert или в IBAnalist

...