PL/SQL w SQL: dwa proste eksperymenty [WITH, PRAGMA UDF, Result Cache, DETERMINISTIC, Scalar Subquery Caching]

W związku z częstymi pytaniami o to, jak optymalnie wykorzystywać funkcje PL/SQL w poleceniach SQL, przyjrzyjmy się następującym dwóm eksperymentom wydajnościowym. Naszym celem będzie przeszukiwanie tabeli liczącej milion rekordów, a klazula WHERE będzie zawierać odwołanie do bardzo prostej funkcji PL/SQL. Eksperyment 1 Dane wejściowe: tabela MROWS zawierająca milion unikatowych rekordów, funkcja PL/SQL DBL() zwraca podwojoną Read more about PL/SQL w SQL: dwa proste eksperymenty [WITH, PRAGMA UDF, Result Cache, DETERMINISTIC, Scalar Subquery Caching][…]

Instalacja Oracle Database 12.2 w środowisku Docker

W związku z coraz powszechniejszym wykorzystywaniem kontenerów Docker i wynikającymi z tego pytaniami o prawidłową instalację i konfigurację oprogramowania serwera bazy danych przeprowadźmy krótką demonstrację obejmującą: (1) przygotowanie systemu operacyjnego Oracle Linux 7.2, (2) instalację oprogramowania Docker Engine, (3) instalację i konfigurację oprogramowania Oracle Database 12c. 1. Przygotowanie systemu operacyjnego Oracle Linux 7.2 Obejmuje dwie Read more about Instalacja Oracle Database 12.2 w środowisku Docker[…]

Kompresja HCC – ocena skuteczności na laptopie

Exadata, ZFS oraz Pillar Axiom umożliwiają stosowanie wysoce skutecznej kompresji kolumnowej HCC (Hybric Columnar Compression) – ciekawy opis znajduje się tu. Funkcjonalność HCC jest jednak wbudowana w każde wydanie serwera bazy danych Oracle Database 12c (nie tylko Exadata), lecz możliwość jej użycia jest blokowana na zasadzie „nie, bo nie”. Pomysły na jej odblokowanie publikowali już Read more about Kompresja HCC – ocena skuteczności na laptopie[…]

Indeksy częściowe w Oracle Database 12c

Oracle Database 12c oferuje ciekawe rozwiązanie, pozwalające zredukować rozmiar indeksu tworzonego na tabeli partycjonowanej, w której wiele partycji ma charakter archiwalny (bardzo rzadko podlega zapytaniom). Indeks częściowy – bo o nim mowa – może obejmować swoim zasięgiem wybrane partycje tabeli, podczas gdy rekordy w pozostałych partycjach tabeli pozostają bez indeksu. Gdy realizowane jest zapytanie do Read more about Indeksy częściowe w Oracle Database 12c[…]

Kilka indeksów na tej samej kolumnie (wyrażeniu) ?!

W przeszłości wielokrotnie podejmowałem dyskusje dotyczące właściwego doboru typu indeksu w zależności od charakterystyki danych i od rodzaju wykonywanych zapytań. Wydawało się, że jednym z niespełnionych marzeń programistów było utworzenie wielu alternatywnych indeksów na tej samej kolumnie (np. bitmapowy, b-drzewo, partycjonowany lokalnie, partycjonowany globalnie,…) tak, aby to optymalizator zapytań (a nie programista) wybrał sobie ten, Read more about Kilka indeksów na tej samej kolumnie (wyrażeniu) ?![…]

Walczymy ze zbędnym REDO w Oracle Database 12c! (temp_undo_enabled)

Jak dobrze wiemy, serwer bazy danych Oracle Database zapewnia odtwarzalność realizowanych transakcji poprzez generowanie informacji Redo zapisywanych w dziennikach powtórzeń (redo logs). Gdy zdarzy się awaria, informacje te pozwalają zrekonstruować stan bazy danych będący skutkiem transakcji zrealizowanych przed awarią. Istnieją jednak sytuacje, w których programiście wcale nie zależy na zabezpieczeniu transakcji, a wręcz postrzega on Read more about Walczymy ze zbędnym REDO w Oracle Database 12c! (temp_undo_enabled)[…]

Automatic Data Optimization w 12c (Information Lifecycle Management)

To jedna z ciekawszych nowych funkcjonalności serwera Oracle Database 12c. Pomaga zoptymalizować mechanizmy składowania danych, którymi użytkownicy od pewnego czasu przestali się aktywnie interesować. Aktualnie dostępne są dwa rozwiązania: (1) kompresja (rekompresja) danych „niedotykanych” przez użytkowników, (2) przenoszenie (tzw. tiering) do „tańszej” przestrzeni tabel tych partycji, które przestają się mieścić w aktualnej przestrzeni tabel, a Read more about Automatic Data Optimization w 12c (Information Lifecycle Management)[…]

Jak nie pomylić się za pierwszym razem? Adaptatywne plany wykonania w Oracle Database 12c

Zajmowaliśmy się już kiedyś ciekawą kwestą korygowania nieoptymalnego planu wykonania z wykorzystaniem Cardinality Feedback (Jak optymalizator uczy się na błędach). Pokazaliśmy, że po pierwszym wykonaniu nieoptymalnego planu wykonania optymalizator potrafi go zmodyfikować tak, aby drugie wykonanie przebiegło już bardziej efektywnie. Niestety, ten mechanizm serwera potrafi być skuteczny dopiero przy drugim wywołaniu tego samego zapytania. Pierwsze Read more about Jak nie pomylić się za pierwszym razem? Adaptatywne plany wykonania w Oracle Database 12c[…]