Размер БД

asviridenkov
Дата: 21.08.2012 14:59:24
Возникло некое непонимание размера базы данных
FB 2.5, страница 16К
По сути, вся БД состоит из таблицы в миллиард записей, формата
TIMESTAMP8
TIMESTAMP8
SMALLINT2
VARCHAR(10)12
VARCHAR(10)12
VARCHAR(10)12
INTEGER4
INTEGER4
INTEGER4

Второй столбец - размер в записи, как он мне представляется
Таким образом, размер всей записи - 66 байт
Прибавляем заголовок записи - 80 байт
Так как страница 16К, и на ней размещается порядка 200 записей, вклад заголовка страницы можно считать несущественным
Таким образом размер БД = 80*1000000000/(1024*1024) примерно 76 гигабайт. А в реальности он более 100 Гб
И это я еще не учитываю, что VARCHAR поля заполнены в среднем наполовину
База создана с нуля и заполнена процедурой, ни изменений ни удалений не производилось
Где я ошибся?
Таблоид
Дата: 21.08.2012 15:04:09
asviridenkov,

$FB_HOME/doc/README.DiskSpaceAllocation.txt
Таблоид
Дата: 21.08.2012 15:16:30
BTW: а какой размер будет у вашей базы при
gbak -c -use_all_space hugebase.fbk hugebase.fdb 
- ?
asviridenkov
Дата: 21.08.2012 15:19:22
Таблоид
asviridenkov,

$FB_HOME/doc/README.DiskSpaceAllocation.txt


Люблю такие лаконичные ответы
Ну и как этот документ отвечает на мой вопрос?
Если касательно
For better control of disk space preallocation, new setting in Firebird.conf
was introduced : DatabaseGrowthIncrement. This is upper bound of preallocation
chunk size in bytes. Default value is 128MB. When engine needs more disk space
it allocates 1/16th of already allocated space but no less than 128KB and no more
than DatabaseGrowthIncrement value. If DatabaseGrowthIncrement is set to zero then

Так он стоит по умолчанию - 128 мегабайт, и на разницу в 30 гигабайт не тянет.
Гаджимурадов Рустам
Дата: 21.08.2012 15:24:09
asviridenkov
Где я ошибся?
Проверь без резервирования места на странице. Ну и индексы.
Таблоид
Дата: 21.08.2012 15:24:45
asviridenkov,

по мере того как вы добавляли записи, ФБ *неоднократно* увеличивал размер БД ("загодя"), и хапал при этом не меньше чем 1/16-ю часть от того размера .fdb, который был в момент "надобности" (с учетом лимитов 128 Kb <= сколько_надо_хапнуть <= 128Mb).
Вот эти неоднократные инкременты и привели к лишнему размеру почти в 30 Гб.
asviridenkov
Дата: 21.08.2012 15:25:45
Гаджимурадов Рустам
asviridenkov
Где я ошибся?
Проверь без резервирования места на странице. Ну и индексы.


Индексов нет
А без резервирования - это как?
Таблоид
Дата: 21.08.2012 15:27:32
asviridenkov
А без резервирования - это как?
это так.
asviridenkov
Дата: 21.08.2012 15:28:52
Таблоид
asviridenkov,

по мере того как вы добавляли записи, ФБ *неоднократно* увеличивал размер БД ("загодя"), и хапал при этом не меньше чем 1/16-ю часть от того размера .fdb, который был в момент "надобности" (с учетом лимитов 128 Kb <= сколько_надо_хапнуть <= 128Mb).
Вот эти неоднократные инкременты и привели к лишнему размеру почти в 30 Гб.


Не понимаю
Вот добавляются записи, в какой-то момент места не хватает, FB добавляет новый кусок размером N<128Mb
При дальнейшем добавлении записей, он что будет резервировать новое место до исчерпания этого куска?
Это же бред
asviridenkov
Дата: 21.08.2012 15:29:19
Таблоид
BTW: а какой размер будет у вашей базы при
gbak -c -use_all_space hugebase.fbk hugebase.fdb 
- ?


Вопрос интересный, но на проверку может пол-дня уйти