Parametr PARALLEL – Co Właściwie Robi I Kiedy Z Niego Korzystać

Oracle udostępnia możliwość zrównoleglenia operacji. Mimo wielopoziomowej możliwości jego ustawienia, finalnie wszystko składa się do tego samego – przeprowadzenie operacji w wielu wątkach. Kiedy i jak korzystać z parametru PARALLEL i czy w ogóle, zostało opisane poniżej.

Zrównoleglenie może mieć miejsce na kilku poziomach:

  • Na poziomie systemu – należy jednak pamiętać, ze nie zaleca się ustawienia zrównoleglenia na systemach OLTP. Tylko dla systemów będących archiwum (OLAP) ma to sens
  • Na poziomie sesji – można tego dokonać poleceniem ALTER SESION PARALLEL QUERY
  • Na poziomie obiektu – np. ALTER TABLE PARALLEL. Tak ustawiony obiekt będzie sugerował optymalizatorowi wykorzystanie full-scanu, nawet wówczas, gdy bardziej optymalne będzie użycie istniejącego indexu. Nie zaleca się stosowania tego przy tworzeniu tabel dla systemów OLTP
  • Na poziomie zapytania w postaci wskazówki (hint) SELECT /*+ PARALLEL */ .... W tym przypadku możliwe jest stosowanie zrównoleglenia dla zapytań również dla systemów OLTP

Kiedy skorzystać ze zrównoleglenia?

  • Przy robieniu backup’ów
  • Przebudowa indexów ALTER INDEX REBUILD PARALLEL
  • Reorganizacja tabeli (pozbywanie się pustych miejsc) ALTER TABLE MOVE PARALLEL
  • Zrównoleglenie tworzenia tabeli w oparciu o dane z innej tabeli CREATE TABLE PARALLEL (degree 8) AS SELECT ...

Co należy mieć w pamięci korzystając z ze zrównoleglenia?

  • Nie należy zapominać o korzystaniu z aliasów jeżeli tabela takie posiada /*+ PARALLEL(alias, 8) */
  • Wykorzystanie parametru/wskazówki PARALLEL ma sens tylko przy full-scanie, inaczej nie będzie brane pod uwagę
  • Stopień zrównoleglenia najlepiej ustawiać jako wielokrotność liczby 2 np.: 2,4,8,16,32
  • Pamiętać również należy o niestosowaniu hintu APPEND z hintem FIRST_ROWS. Ten pierwszy bazuje na full-scanie, drugi na indexie. Zastosowanie ich obu nie ma najmniejszego sensu.

Przykłady stosowania:

DROP TABLE T1
/
DROP TABLE T2
/

CREATE TABLE T1(id NUMBER, descr CHAR(2000))
/

--Ustawienie zrównoleglenia na poziomie sesji
ALTER SESSION FORCE PARALLEL QUERY PARALLEL 8
/

INSERT INTO T1
  SELECT ROWNUM, 'A' FROM dual
  CONNECT BY ROWNUM <= 100000
/

--Tworzenie tabeli T2 z wykorzystaniem zrównoleglenia
CREATE TABLE T2 PARALLEL (degree 8) AS
  SELECT * FROM T1
/

--Przeorganizowanie tabeli. Ustawienie zrównoleglenia na tabeli 
ALTER TABLE T1 MOVE PARALLEL 8
/
--Konieczne wycofanie zrównoleglenia przy systenach OLAP
ALTER TABLE T1 NOPARALLEL
/

--Wykorzystanie wskazówki (hint) PARALLEL 
SELECT /*+ PARALLEL(t, 8) */ * FROM T1 t 
/
Plan zapytania instrukcji SELECT z zaznaczonymi blokami wykorzystania zrównoleglenia

Szymon

Komentarze |1|

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>