GPO ( Grupo de Profissionais Oracle )
A maior comunidade Oracle do Brasil !

Compressão = Velocidade

Se estiver utilizando Oracle 11gR2, utilize o Advanced Compression. É um dos motivos que eu digo que qualquer aplicação fica mais rápida em 11gR2.
Há uma crença sobre Oracle a respeito de tabelas com COMPRESSION, pois o uso delas irá utilizar mais CPU. Na verdade, o algoritmo de compressão está tão otimizado, e o ganho de desempenho com elas é tão grande, que menos CPU será utilizada durante toda a execução do SQL pois a resposta total será mais rápida, compensando os ciclos gastos com a descompressão. Quanto a outros recursos, imagine somente o que a economia de DB_CACHE_SIZE lhe trará.
Veja a diferença absurda de tempos nos exemplo abaixo. Repeti 5x cada teste, pra eliminar qualquer outra variável.

[oracle@Oracle-01 ~]$ sqlplus SCOTT/TIGER

 SQL*Plus: Release 11.2.0.1.0 Production on Thu Sep 9 14:12:21 2010

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, Oracle Label Security, OLAP, Data Mining,
Oracle Database Vault and Real Application Testing options

SQL> SET TIMING ON
SQL> SELECT COUNT(*) FROM T;

COUNT(*)
----------
7121664

Elapsed: 00:00:32.28
SQL> /

COUNT(*)
----------
7121664

Elapsed: 00:00:29.66
SQL> /

COUNT(*)
----------
7121664

Elapsed: 00:00:31.14
SQL> /

COUNT(*)
----------
7121664

Elapsed: 00:00:30.08
SQL> /

COUNT(*)
----------
7121664

Elapsed: 00:00:31.74
SQL> CREATE TABLE T2 COMPRESS AS SELECT * FROM T;

Table created.

Elapsed: 00:02:14.21
SQL> SELECT COUNT(*) FROM T2;

COUNT(*)
----------
7121664

Elapsed: 00:00:04.33
SQL> /

COUNT(*)
----------
7121664

Elapsed: 00:00:01.14
SQL> /

COUNT(*)
----------
7121664

Elapsed: 00:00:01.07
SQL> /

COUNT(*)
----------
7121664

Elapsed: 00:00:01.01
SQL> /

COUNT(*)
----------
7121664

Elapsed: 00:00:01.01
SQL> SELECT TO_CHAR(SUM(BYTES)) FROM DBA_SEGMENTS WHERE SEGMENT_NAME = 'T';

TO_CHAR(SUM(BYTES))
----------------------------------------
1613758464

Elapsed: 00:00:01.99
SQL> SELECT TO_CHAR(SUM(BYTES)) FROM DBA_SEGMENTS WHERE SEGMENT_NAME = 'T2';

TO_CHAR(SUM(BYTES))
----------------------------------------
243269632

 Elapsed: 00:00:00.46
SQL>
Share

You may also like...

3 Responses

  1. Hugo Torralbo disse:

    Muito bom.
    Vou testar, cenários com SORT.

    Hugo

  2. icewarp disse:

    É uma feature paga à parte, não?

  3. Sim, além de ser uma Feature paga a parte (US$ 11.500 por Core), só pode ser adquirida na versão Enterprise (U$$ 47.500 por Core).

    Abraço !

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *