Ова страница је машински преведена. Прочитајте енглески оригинал. English

IBSurgeon библиотека

Максимална величина табеле у InterBase-у (пре 2009)

Dmitry Kuzmenko, 20-окт-2009

Радећи на занимљивом инциденту техничке подршке са једним од наших купаца, открили смо да се стварни максимални број редова разликује од декларисаног лимита.

У документацији [Operations Guide for InterBase 6, страна 27, InterBase Specification] можемо прочитати следеће:

“Максимални број редова и колона по таблици: По дизајну, 2^32 редова, јер су редови нумерисани 32-битним неозначеним целим бројем по таблици.”

Наравно, редови су нумерисани 32-битним целим бројем. Нажалост, али заправо ниједна табела никада не може достићи лимит од 2 милијарде записа - чак ни табела са само једном колоном.

Разлог за такво понашање је у алгоритму израчунавања слободног простора за нови (уметнути) запис - може доћи до прекорачења целобројне вредности и видећете следећу поруку о грешци у interbase.log:

pointer page vanished from DPM_next (249)

И, реалност је да величина странице базе података или величина реда не утичу на овај лимит. Лимит је магична величина табеле која је увек иста (~36,6 гигабајта) и може се израчунати у страницама за било коју величину странице базе података као:

Максимални број страница за једну табелу може се израчунати као

MaxDataPageCount = (MaxInt / PageSize) * 17.476

MaxInt је, наравно, = 2147483647. Поставите величину странице ваше базе података уместо PageSize и резултат ће показати колико страница може бити додељено за било коју табелу.

На пример, табела не може имати више од ~9 милиона податковних страница у бази са величином странице од 4K.

Са становишта броја записа, табела са 2 целобројне колоне не може нарасти више од 600 милиона (!) записа (не заборавите да сваки запис има 14 бајтова заглавља).

Збуњени? Помножите MaxDataPageCount са PageSize и поделите резултат са просечном величином реда ваше највеће табеле - знаћете када ће та табела премашити лимит и ваша база података ће престати да ради .

Овај лимит је поправљен тек у Firebird 2. Још увек постоји у InterBase 2007.

Ако имате питања или сугестије о информацијама на овој страници, слободно контактирајте наш истраживачки тим преко [email protected]. Такође смо добродошли за било какве информације о занимљивим и/или чудним стварима везаним за InterBase или Firebird.