Advanced Row Compression

 L'opzione Advanced Row Compression permette di comprire i dati inseriti o aggiornati con e senza direct-path.

E' abilitato con il comando CREATE TABLE … ROW STORE COMPRESS ADVANCED ed è raccamandato per attività OLTP.

Questa compressione fa si che i valori duplicati in righe e colonne in un data block sono memorizzate una sola volta all'inizio del blocco.
Importante ricordare che ROW STORE COMPRESS ADVANCED e COMPRESS BASIC non sono supportati per tabelle con più di 255 colonne.
Inoltre non è possibile droppare una colonna da una tabella che è compressa per operazioni direct-load, 
sebbene sia possibile impostare una colonna di questo tipo come "unused".


Caso 6  Creiamo una tabella senza compressione dei dati.

SQL> create table test06 
            as select * from dba_objects where rownum <= 10000;

SQL>    ANALYZE TABLE test06 COMPUTE statistics;

SQL>    select  blocks, pct_free , compression, compress_for
                from    user_tables
                where   table_name = 'TEST06';


    BLOCKS   PCT_FREE     COMPRESS     COMPRESS_FOR                  
---------- ---------- -------- ---------------------------------------------------
       186         10                     DISABLED                               


Caso 7 Creiamo una tabella con compressione dei dati avanzata.

SQL> create table test07 ROW STORE COMPRESS ADVANCED
            as
            select * from dba_objects where rownum <=10000;

SQL>    ANALYZE TABLE test07 COMPUTE statistics

SQL>    select  blocks, pct_free , compression, compress_for
                from    user_tables
                where   table_name = 'TEST07';

    BLOCKS   PCT_FREE         COMPRESS         COMPRESS_FOR                  
---------- ---------- -------- ------------------------------------------------------
        50         10                         ENABLED          ADVANCED    


Caso 8 Eseguiamo insert normali nella tabella vuota creata con compressione avanzata.

SQL>  create table test08 ROW STORE COMPRESS ADVANCED
            as
            select * from dba_objects where rownum = 0;

SQL>  insert into test08
            select * from dba_objects where rownum <= 10000;
            commit;

SQL> ANALYZE TABLE test08 COMPUTE statistics;

SQL> select  blocks, pct_free , compression, compress_for
            from    user_tables
            where   table_name = 'TEST08';

    BLOCKS   PCT_FREE     COMPRESS     COMPRESS_FOR                  
---------- ---------- -------- ---------------------------------------------
        58         10                     ENABLED          ADVANCED    


Ricordo che se la tabella ha una compressione base, non ho benifici se eseguo delle insert normali.
Al contrario con una compressione avanzata anche con le insert normali ho benifci di occupazione di spazio.


Post popolari in questo blog

ORA-12154: TNS: il listener non è attualmente a conoscenza del servizio richiesto nel descrittore di connessione

Create e Drop Pluggable Database