2 апреля 2008 г.

Autoallocate vs. Uniform

Сегодня в очередной раз столкнулась с дилеммой: какие табличные пространства создавать для продуктивной базы данных (OLTP, объем около 1тб) - uniform или autoallocate?

Смысл uniform в том, что экстенты выделяются одного размера. Например, если мы создаем табличное пространство:

CREATE TABLESPACE "LARGE_DATA" DATAFILE
'/kazcare/u01/oradata/KAZCARE/large_data${ORACLE_SID}01.dbf' SIZE 1024M
AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 16M SEGMENT SPACE MANAGEMENT AUTO;


Экстенты таблицы, которая будет создана в этом табличном пространстве, будут одинакового размера - 16M.

А таблицы, созданные в следующем табличном пространстве будут автоматически регулироваться и размер каждого последующего экстента будет увеличиваться от 64K до 64M по мере роста сегмента.

CREATE TABLESPACE "ANY_DATA" DATAFILE
'/u01/oradata/TESTDB/any_data01.dbf' SIZE 1024M
AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED
EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT AUTO;


Металинк:

"If the tablespace is expected to contain objects of varying sizes requiring
different extent sizes and having many extents, then AUTOALLOCATE is the best
choice."

"On the other hand, if you want exact control over unused space, and you can
predict exactly the space to be allocated for an object or objects and the
number and size of extents, then UNIFORM is a good choice."