14.03.2012

Размер начального экстента

Методика расчета
Задача: рассчитать оптимальный размер начального экстента таблицы
create table foo(
id number(8),
f1 number(10,2),
cdate date,
cname_c char(15),
cname_v varchar2(50),
cname_z nvarchar2(255),
fclob clob,
fblob blob
)
1. Column size including byte length = column size + (1, if column size < 250, else 3)
number: число байт / 2 + 1 (+1 если отрицательное);
varchar2, blob, clob: средний размер записи (можно брать число байт * 0.7) + (1, if column size < 250, else 3);
nvarchar2, nclob: средний размер записи (можно брать число байт * 0.7) * 2 + (1, if column size < 250, else 3);
char: размер в байтах + 1;
nchar: размер в байтах * 2 + 1;
date: 8 байт (7 + 1);
4+1+6+1+7+1+15+1+35+1+360+3+360+1+360+1 = 1157;
2. Rowsize = row header (3 * UB1) + sum of column sizes including length bytes
UB1 : select TYPE_SIZE from V$TYPE_SIZE where TYPE = 'UB1'
1157+3=1159;
3. Final space = Rowsize * rowcount
rowcount - предполагаемое количество строк в таблице
1161 * 1000 = 1161000B = 1M
Итоговый размер записи будет равен INITIAL SIZE + PCTFREE.
PCTFREE (устанавливается в процентах) используется для резервиро­вания определенного процента пространства в каждом блоке для грядущих опе­раций обновления, которые увеличивают длину значений одного или нескольких столбцов.

Комментариев нет :