![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Можно ли оценить размер БД [D6, FireBird 1.5]
S@shka © (2006-07-08 02:54:00)Есть порядка 10 таблиц.
Но именяется (постоянно наполняется) - только одна
вот такой структуры
1 Integer
2 Integer
3 Double
4 TimeStamp
+ висит индекс на поле 1 2 и 4
Можно ли как то оценить размер БД при добавлении скажем 1 000 000 записей в данную таблицу?
Точнее чем просто SizeOf(Table)*1000000
Desdechado (2006-07-10 11:35:00) [1]Андрей Пазик (09.07.06 20:38) [9]
Источник, пожалуйста.
Двоичные деревья, на которых базируются индексы, имеют это нехорошее свойство. Особенно, если новые индексируемые ключи сильно отличаются от ключа точки входа в дерево.
Андрей Пазик (2006-07-09 20:38:00) [2]> При массовых добавлениях индексируемых записей индексы обычно
> перекашивает (несбалансированные двоичные деревья получаются)
> , а это увеличивает количество служебных данных в индексе.
> Если индекс перестроить, то он будет занимать меньше места.
> Ну, и на последок, не сказано вообще, обязательные ли поля
> или опциональные. NULL, как известно, в БД не записывается
> и места не занимает.
У вас очень устаревшие данные. Ничего не перекашивает, и уже давно.
Desdechado (2006-07-09 19:48:00) [3]Имхо, только с точностью "плюс-минус два лаптя от солнца".
Поскольку, как уже говорилось, страницы выделяются в зависимости от свойств БД (указанной степени заполнения страниц, размера страниц), свойств данных (сжимаемые или нет), свойств индексов по данным (часто ли данные повторяются, делается ли backup-restore или переиндексация).
Про backup-restore и индексы вообще отдельная песня. При массовых добавлениях индексируемых записей индексы обычно перекашивает (несбалансированные двоичные деревья получаются), а это увеличивает количество служебных данных в индексе. Если индекс перестроить, то он будет занимать меньше места.
Ну, и на последок, не сказано вообще, обязательные ли поля или опциональные. NULL, как известно, в БД не записывается и места не занимает.
DrPass (2006-07-08 19:10:00) [4]Сам же написал:
> SizeOf(...)*1000000
Добавь сюда еще такую же по индексам... и получится математически, с очень низкой точностью. Точнее - никак. В БД образуется масса пустых страниц, временные данные и т.д., заранее определить которые не представляется возможным.
S@shka (2006-07-08 17:45:00) [5]Интересует математически с определенной точностью.
Можн или нет?
Типа Размер = Func (Размер_Страницы,Индексы,Типы_Данных,Количество_Записей)
Мне нужна какая то мера оценки.
PEAKTOP (2006-07-08 16:25:00) [6]В IBExperte есть такая функция "Инструменты -> Генератор тестовых данных"
DrPass (2006-07-08 16:17:00) [7]Т.е. оценить нельзя, но можно добавить и посмотреть, что получится :)
В реальной БД размер будет несколько больше, нежели после добавления записей сразу после бекап/рестор
Johnmen (2006-07-08 15:02:00) [8]
> Можно ли как то оценить размер БД при добавлении скажем
> 1 000 000 записей в данную таблицу?
Легко.
Делаешь b/r, запоминаешь размер файла, добавляешь свой лимон, смотришь размер файла.
Johnmen (2006-07-08 14:58:00) [9]
> Можно ли как то оценить размер БД при добавлении скажем
> 1 000 000 записей в данную таблицу?
Легко.
Делаешь b/r, запоминаешь размер файла, добавляешь свой лимон, смотришь размер файла.
DrPass (2006-07-08 14:45:00) [10]
> Можно ли как то оценить размер БД
Точно - нельзя. Выделение страниц в БД зависит от очень многих факторов, куда более сложных, чем SizeOf(...)*1000000. Но в любом случае будет больше, чем этот самый SizeOf(...)*1000000 :) И, судя по всему, размеры индекса к твоей таблице будут едва ли не превышать размеры таблицы