Код: Выделить всё
CREATE TABLE CHARTPOINTS (
ID DID /* DID = INTEGER NOT NULL */,
POINTTIME DTIMESTAMP /* DTIMESTAMP = TIMESTAMP DEFAULT 'now' NOT NULL */,
CHARTID DID /* DID = INTEGER NOT NULL */,
XVAL DVALUE /* DVALUE = DOUBLE PRECISION */,
YVAL DVALUE /* DVALUE = DOUBLE PRECISION */
);
Считаю:CHARTPOINTS (168)
Primary pointer page: 230, Index root page: 231
Average record length: 35.90, total records: 908713
Average version length: 0.00, total versions: 0, max versions: 0
Data pages: 8641, data page slots: 8641, average fill: 68%
Fill distribution:
0 - 19% = 0
20 - 39% = 0
40 - 59% = 1
60 - 79% = 8640
80 - 99% = 0
Index FK_CHARTPOINTS_CHARTID (1)
Depth: 2, leaf buckets: 549, nodes: 908713
Average data length: 0.00, total dup: 908085, max dup: 2159
Fill distribution:
0 - 19% = 0
20 - 39% = 1
40 - 59% = 0
60 - 79% = 0
80 - 99% = 548
Index PK_CHARTPOINTS (0)
Depth: 2, leaf buckets: 662, nodes: 908713
Average data length: 1.00, total dup: 0, max dup: 0
Fill distribution:
0 - 19% = 0
20 - 39% = 0
40 - 59% = 0
60 - 79% = 1
80 - 99% = 661
Размер таблицы = Data pages * Размер страницы = 8641*8192 = 68mb
Теперь по другому.
Размер таблицы = (Total records * Aver record length / average fill) + Размер индексов(смотрел в IBanalyst) = (908713*35.9/0.68) + 9mb = 55mb.
Не сошлось.
Вопросы:
- Где ошибка в расчетах?
- Так ли это, что сервер целенаправленно поддерживает уровень заполнения страниц в районе 70%, оставляя свободное место для последующих добавлений и других манипуляций? Если да, то получается оценки роста БД надо было делать с учетом этого факта.
- Почему средний размер записи равен 35,9? Если просуммировать размеры всех полей таблицы, получится 32.
Спасибо.