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 /

SELECT
z zaznaczonymi blokami wykorzystania zrównolegleniaSzymon
Komentarze |1|
Kategoria: Oracle 11g | Oracle 19c | Oracle 21c | SQL
Tagi: CREATE, HINT, INSERT, NOPARALLEL, PARALLEL, SESSION, TABLE
Tagi: CREATE, HINT, INSERT, NOPARALLEL, PARALLEL, SESSION, TABLE
[…] trybie FULL SCAN. Wiedząc to, z hintu FIRST_ROWS nie korzysta się razem ze wskazówkami APPEND i PARALLEL, bo te bazują właśnie na trybie dostępu […]