Kompresowanie Tabeli – BASIC Compression

Kompresja podstawowa (BASIC Compression), to wbudowany mechanizm kompresji dla wersji Enterprise bazy danych Oracle. Pozwala na upakowanie dużej liczby danych w mniejszą przestrzeń, co pozwala na zaoszczędzenie miejsca na dyskach, a tym samym zoszczędzenie $.

DROP TABLE T1
/

CREATE TABLE T1(id NUMBER, descr VARCHAR2(2000))
NOCOMPRESS /*default option*/
/

INSERT INTO T1 
  SELECT ROWNUM, 'ALA MA KOTA I PSA' FROM DUAL
 CONNECT BY ROWNUM <= 1000000
/ 
SELECT compression, compress_for
  FROM user_tables
 WHERE table_name = 'T1'
/
COMPRESSION  COMPRESS_FOR
-----------  ------------
  DISABLED      (null)

BEGIN
  dbms_stats.gather_table_stats(USER, 'T1');
END;
/

SELECT bytes/1024/1024 AS used_spaced_mb,
       blocks
  FROM dba_segments
 WHERE segment_name = 'T1'
/
USED_SPACE_MB  BLOCKS
-------------  ------
      31        1984

Powyższe, wyniki wskazują, że dla nieskompressowanej tabeli T1 z 1 mln rekordów dane zajmują 31MB.

Włączenie kompresji na tabeli możemy zrealizować dwojako:

  • włączenie tylko dla nowych danych
  • włączenie dla istniejących i nowych danych
--Wlaczenie kompresji TYLKO dla nowych rekordow
ALTER TABLE T1 COMPRESS
/

--Wlaczenie kompresji dla istniejacych i nowych danych
ALTER TABLE T1 MOVE COMPRESS
/

Po wykonaniu polecenia z MOVE COMPRESS widać doskonale jak dużo miejsca udało się oszczędzić.

COMPRESSION  COMPRESS_FOR
-----------  ------------
  ENABLED       BASIC
USED_SPACE_MB  BLOCKS
-------------  ------
      11	704

Należy pamiętać jednak, że podstawowa kompresja (BASIC Compression) ma swoje ograniczenia:

  • Kompresję podstawową najlepiej wykorzystywać przy danych archiwalnych, co do których dostęp będzie sporadyczny i żadne operacje DML nie będą miały miejsca
  • Jeżeli tak skompresowane dane zostaną zmienione instrukcją DML, kompresja na tych danych nie będzie ich uwzględniać
  • Aby wstawić rekord do tabeli skompresowanej należy użyć polecenia INSERT z hintem APPEND. W innym przypadku wstawiany rekord nie będzie skompresowany
  • Kompresja podstawowa najlepiej sprawdza się przy środowiskach typu OLAP

Wszystkie te ograniczenia nie będą miały miejsca jeżeli skorzysta się z kompresji zaawansowanej Advance Compression, ale wymaga ona zakupienia dodatkowej licencji, która kosztuje krocie.

O tym, jak dużo miejsca można zyskać korzystając z kompresji można oszacować z wykorzystaniem pakietu DBMS_COMPRESSION. Zapraszam do lektury Szacowanie Współczynnika Kompresji Danych.

Szymon

Komentarze |0|

Legenda *) Pola oznaczone gwiazdką są wymagane
**) Możesz używać tych znaczników i atrybutów HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>