Mittwoch, Dezember 11, 2013

compression in 12c

Angesichts der vorhin erwähnten Untersuchung von Julian Dyke habe ich noch mal überprüft, ob sich hinsichtlich des Themas compression in 12c Grundsätzliches verändert hat, und dazu folgendes Script verwendet:

drop table t_no_compress;
drop table t_basic_compress;
drop table t_oltp_compress;

create table t_no_compress
as
select rownum id
     , 10 col1
     , lpad('*', 50, '*') padding
  from dual
connect by level <= 100000;

create table t_basic_compress compress
as
select *
  from t_no_compress;
  
create table t_oltp_compress compress for oltp
as
select *
  from t_no_compress;
  

exec dbms_stats.gather_table_stats(user, 't_no_compress', estimate_percent=>0)
exec dbms_stats.gather_table_stats(user, 't_basic_compress', estimate_percent=>0)
exec dbms_stats.gather_table_stats(user, 't_oltp_compress', estimate_percent=>0)  

select table_name
     , num_rows
     , blocks 
     , compression
     , compress_for
  from user_tables where table_name in ('T_NO_COMPRESS', 'T_BASIC_COMPRESS', 'T_OLTP_COMPRESS')
 order by table_name;
  
update t_no_compress set col1 = col1 + 1;  
update t_basic_compress set col1 = col1 + 1;  
update t_oltp_compress set col1 = col1 + 1;  

exec dbms_stats.gather_table_stats(user, 't_no_compress', estimate_percent=>0)
exec dbms_stats.gather_table_stats(user, 't_basic_compress', estimate_percent=>0)
exec dbms_stats.gather_table_stats(user, 't_oltp_compress', estimate_percent=>0)  

select table_name
     , num_rows
     , blocks 
     , compression
     , compress_for
  from user_tables where table_name in ('T_NO_COMPRESS', 'T_BASIC_COMPRESS', 'T_OLTP_COMPRESS')
 order by table_name;

Das Script liefert mir folgende Ergebnisse:

-- 11.1.0.7
-- vor dem Update
TABLE_NAME                       NUM_ROWS     BLOCKS COMPRESS COMPRESS_FOR
------------------------------ ---------- ---------- -------- ------------
T_BASIC_COMPRESS                   100000        162 ENABLED  BASIC
T_NO_COMPRESS                      100000        909 DISABLED
T_OLTP_COMPRESS                    100000        179 ENABLED  OLTP

-- nach dem Update
TABLE_NAME                       NUM_ROWS     BLOCKS COMPRESS COMPRESS_FOR
------------------------------ ---------- ---------- -------- ------------
T_BASIC_COMPRESS                   100000       1138 ENABLED  BASIC
T_NO_COMPRESS                      100000        909 DISABLED
T_OLTP_COMPRESS                    100000        508 ENABLED  OLTP

-- 12.1.0.1
-- vor dem Update
TABLE_NAME                       NUM_ROWS     BLOCKS COMPRESS COMPRESS_FOR
------------------------------ ---------- ---------- -------- ------------------------------
T_BASIC_COMPRESS                   100000        151 ENABLED  BASIC
T_NO_COMPRESS                      100000        909 DISABLED
T_OLTP_COMPRESS                    100000        166 ENABLED  ADVANCED

-- nach dem Update
TABLE_NAME                       NUM_ROWS     BLOCKS COMPRESS COMPRESS_FOR
------------------------------ ---------- ---------- -------- ------------------------------
T_BASIC_COMPRESS                   100000       1138 ENABLED  BASIC
T_NO_COMPRESS                      100000        909 DISABLED
T_OLTP_COMPRESS                    100000        508 ENABLED  ADVANCED

Ich will nicht behaupten, dass dieser Test alle denkbaren Fragen zum Thema beantwortet, aber auf den ersten Blick wirken die Ergebnisse ähnlich genug, um mich davon zu überzeugen, dass hier keine dramatische Verhaltensänderung im Spiel ist. Eine solche wäre aber vermutlich auch schon irgendwo erwähnt worden.

Keine Kommentare:

Kommentar veröffentlichen