Przeszukiwanie danych pełnotekstowych – indeks Oracle Text typu CTXSYS.CONTEXT

Dość powszechnym wyzwaniem dla programistów jest umożliwienie użytkownikom bazy danych efektywnego wyszukiwania informacji w oparciu o częściowe dopasowanie danych tekstowych, np. szukanie produktów zawierających określone słowo w opisie, szukanie symboli produktów zawierających określony fragment, szukanie dokumentów tekstowych zawierających podaną frazę, itp. Zwykle zadania takie są realizowane za pomocą operatora LIKE ‚%…%’ lub UPPER(…) LIKE ‚%…%’.[…]

Automatyczne zarządzanie pamięcią SGA a usterka ORA-04031

Od czasów wersji Oracle Database 10g powszechnie wykorzystujemy mechanizmy automatycznego zarządzania pamięcią operacyjną instancji (Automatic Shared Memory Management – ASMM, czy później Automatic Memory Management – AMM). Pamiętamy ze szkoleń, że zwalniają one administratora m.in. z obowiązku ręcznego konfigurowania rozmiarów obszarów buforowych takich jak Buffer Cache i Shared Pool oraz z podejmowania decyzji o proporcji[…]

STATISTICS_LEVEL=ALL – zyski vs. koszty

Dwa z najbardziej atrakcyjnych mechanizmów optymalizatora zapytań Oracle Database 12c – „cardinality feedback” i „adaptive cursor sharing” – do prawidłowego działania wymagają (o czym często ze zdziwieniem przekonują się administratorzy) przełączenia parametru inicjalizacyjnego STATISTICS_LEVEL na poziom „ALL” (domyślnie „TYPICAL”). Przy takim ustawieniu gromadzone są dodatkowe wskaźniki wydajnościowe: Plan Execution Statistics i Timed OS Statistics (zainteresowanych[…]

Oracle Database 12.2 Database Sharding – porady praktyczne

Jedną z flagowych funkcjonalności drugiego wydania serwera bazy danych Oracle Database 12c (12.2) jest Database Sharding (dzielenie bazy danych). Jest to klon rozwiązania dobrze znanego w świecie systemów NoSQL, polegającego na horyzontalnym partycjonowaniu danych pomiędzy wiele fizycznych lokalizacji. Taki rozdział danych pozwala następnie rozdzielić obciążenie aplikacyjne i tym samym uzyskać efekt prawie-liniowej skalowalności bardzo dużych[…]

Jak bardzo statystyki systemowe wpływają na wybór planu wykonania?

Wiemy, że statystyki systemowe są ważnym opisem wydajności wykorzystywanej platformy sprzętowej oraz że kosztowy optymalizator zapytań Oracle Database odwołuje się do ich wartości podczas szacowania kosztów planów wykonania zapytań (pisaliśmy o statystykach systemowych TU). Wielu administratorów zastanawia się jednak, jak bardzo optymalizator zapytań jest „wrażliwy” na wartości tych statystyk (zbieranych metodami eksperymentalnymi). Aby odpowiedzieć na[…]

Oracle Database FGAC/VPD – blaski i cienie (a.k.a. CONTEXT_SENSITIVE)

Drobnoziarnista kontrola dostępu (Fine-Grained Access Control – FGAC) jest popularną techniką kontroli dostępu użytkowników do danych na poziomie rekordów (w przeciwieństwie do kontroli dostępu na poziomie tabeli – realizowanej poleceniami GRANT), pozwalającą udostępniać różnym użytkownikom różne zestawy rekordów z tej samej tabeli (co daje efekt tzw. Virtual Private Database – VPD). Ogólna idea FGAC sprowadza[…]

Hinty bez ingerencji w treść zapytania? SQL Patch!

Od czasu do czasu pojawia się konieczność skorygowania decyzji optymalizatora zapytań, który pomimo poprawnych i aktualnych statystyk uparcie nie chce wybrać najlepszego planu wykonania (query execution plan). Większość deweloperów sięga wtedy po wskazówki sterujące (hinty), umieszczane w treści problematycznego zapytania. Jest to metoda skuteczna, o ile mamy możliwość edycji treści zapytania – co bywa trudne[…]

Wpływ Clustering Factor na wydajność zapytań zakresowych z indeksem

W tabelach typu Heap (najpopularniejsze, domyślne) kolejność fizycznego ułożenia rekordów jest zasadniczo przypadkowa, wynikająca m.in. z porządku ich wstawiania. Kolejność ta nie ma żadnego znaczenia dla wydajności zapytań dokonujących pełnego odczytu tabeli lub jednorekordowych zapytań punktowych z użyciem indeksu. Ma jednak znaczenie dla wydajności realizacji zapytań zakresowych z użyciem indeksu, gdzie wynikowy zbiór rekordów tabeli[…]