Расчеты размера и размера таблицы данных

Использовать эту формулу в качестве стандартного для расчета размера ТБ, как часть 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 ) 
Другие вопросы по тегам