[ 2015-01-05 ]

Deferred Segment Creation

A continuación la traducción de un instaresante post de Alex Zaballa de Brasil sobre Deferred Segment Creation:


Esta funcionalidad se ha introducido en Oracle 11G R2 y permite que los segmentos de tablas y sus objetos dependientes (LOBs, índices, etc.) no sean creados hasta que una primera fila sea introducida en la tabla.

Esta funcionalidad puede ser controlada por el parámetro de inicialización DEFERRED_SEGMENT_CREATION, que es definido como TRUE por defeto. Este valor también puede ser cambiado en una sesión, utilizando o ALTER SESSION.


SQL> show parameter DEFERRED_SEGMENT_CREATION

NAME                                 TYPE                VALUE
------------------------------------ ------------------- -----
deferred_segment_creation            boolean             TRUE

SQL> create table tabla_test(col1 number);
Table created.

SQL> SELECT segment_name,
segment_type
FROM user_segments
WHERE segment_name='tabla_test';

no rows selected

SQL> insert into tabla_test values(1);

1 row created.

SQL> SELECT segment_name,
segment_type
FROM user_segments
WHERE segment_name='tabla_test';

no rows selected

SEGMENT_NAME                     SEGMENT_TYPE
-------------------------------- ------------
tabla_test                     TABLE

1 fila seleccionada.


Podemos especificar eso en la creación de la tabla, utilizando SEGMENT CREATION DEFERRED o SEGMENT CREATION IMMEDIATE.

SQL> create table tabla_test2(col1 number) SEGMENT CREATION IMMEDIATE;

Table created.

SQL> SELECT segment_name,
segment_type
FROM user_segments
WHERE segment_name='tabla_test2';

no rows selected

SEGMENT_NAME                     SEGMENT_TYPE
-------------------------------- ------------
tabla_test2                    TABLE

1 fila seleccionada.

Para eliminar los segmentos associados a una tabla, se agregó la cláusula DROP ALL STORAGE o TRUNCATE TABLE (disponible en 11.2.0.2).



SQL> TRUNCATE TABLE tabla_test DROP ALL STORAGE;

Table truncated.

SQL> SELECT segment_name,
segment_type
FROM user_segments
WHERE segment_name='tabla_test';

no rows selected

No hay comentarios:

Publicar un comentario