Оценка размера записи
Добавлено: 20 янв 2006, 10:56
К сожалению я нигде не нашёл формулу расчёта длины записи для FB. Я понимаю: из-за того, что FB пакует каждую запись, точно посчитать её размер невозможно, но хотелось бы иметь формулу хотя бы для худшего случая.
Вот моё предположение:
Размер записи=24+суммарный размер полей.
Размер полей указан в документации, однако ничего не сказано про стоимость хранения varchar (есть ли там поле длины и сколько оно занимат: байт или два?).
Также в документации не указана стоимость поддержки значений NULL (1 бит на поле, 1 байт?).
Ну и мелкие претензии не по теме, но рядом с ней:
- странно, что date, time и timestamp занимают одинаковое количество байт (восемь), хотя последний тип должен быть больше, так как включает в себя два первых.
- не хватает типов tinyint (1 байт) и mediumint (3 байта), а также беззнаковых типов. Для небольших таблиц это не имеет большого значения, но когда в таблице сотни миллионов записей - каждый байт на счету. Хотя, наверное, это претензии скорее к стандарту SQL (где подобных типов не предусмотрено), чем конкретно к FB.
Вот моё предположение:
Размер записи=24+суммарный размер полей.
Размер полей указан в документации, однако ничего не сказано про стоимость хранения varchar (есть ли там поле длины и сколько оно занимат: байт или два?).
Также в документации не указана стоимость поддержки значений NULL (1 бит на поле, 1 байт?).
Ну и мелкие претензии не по теме, но рядом с ней:
- странно, что date, time и timestamp занимают одинаковое количество байт (восемь), хотя последний тип должен быть больше, так как включает в себя два первых.
- не хватает типов tinyint (1 байт) и mediumint (3 байта), а также беззнаковых типов. Для небольших таблиц это не имеет большого значения, но когда в таблице сотни миллионов записей - каждый байт на счету. Хотя, наверное, это претензии скорее к стандарту SQL (где подобных типов не предусмотрено), чем конкретно к FB.