Расчеты размера и размера таблицы данных
Использовать эту формулу в качестве стандартного для расчета размера ТБ, как часть Cap. Планирование усилий. Мы находимся на TD 14
( rc * ( rsz / ( blocksize -38) ) * blocksize )
+ ( SQL (sel Hashamp()+1 ; ) * 1024 )
rsz : row size , rc : count ( * )
Вот собственно
(blocksize-38)/rsz
не что иное, как строки / блок. Получается доля < 1. Я думаю, что это плохо, потому что это будет означать, что несколько блоков занимают ряд. Мои вопросы
- Нужны ли формулы для дальнейшего хонингования? Последняя часть после знака сложения предусматривает заголовок таблицы. Для этой таблицы НЕТ СИ - только 2 даты, 1 целое число и 1 varchar (50) с NUPI, который является NPPI . Ни один из них не является Nullable и, очевидно, без данных, с самого начала ничего не сжимается (ну, сейчас не хватает информации, чтобы включить сжатие, но мы запустим сценарии сжатия позже)
- потому что это будет несколько блоков, охватывающих строку - я должен увеличить размер блока? сколько - какое должно быть идеальное количество строк на блок. Табличные данные будут обновляться каждый квартал, и в это время ничего не произойдет.
1 ответ
Строка в Teradata никогда не охватывает блоки.
Вы просто ошиблись в своих расчетах, вы говорите о (blocksize-38)/rsz
, но фактический расчет показывает rsz / ( blocksize -38)
,
Поскольку накладные расходы блока в более новых выпусках увеличились до 74, это должен быть правильный расчет:
( rc / (( blocksize - 74)/rsz ) * blocksize )
+ ( (HASHAMP()+1 ) * 1024 )
Он находится в таблицах размеров, хэш-индексах и индексах соединений.
Но вы заметите, что это подходит rc * rsz
для больших столов. Поскольку никто не заботится о небольших таблицах, я обычно использую этот упрощенный расчет для определения размера таблицы (вы можете добавить 1 или 2 процента, чтобы получить максимально возможный размер).
Редактировать:
Не неправильный расчет, это связано с использованием базовых типов данных (вероятно, усечение DECIMAL
). Изменить на FLOAT
или же NUMBER
:
( rc * ( rsz / ( CAST(blocksize -74 AS FLOAT)) ) * blocksize )
+ ( (HASHAMP()+1 ) * 1024 )