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 Read more about Hinty bez ingerencji w treść zapytania? SQL Patch![…]

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 Read more about Wpływ Clustering Factor na wydajność zapytań zakresowych z indeksem[…]

Podstawy Oracle Database: uwaga na koszt planu wykonania zapytania!

Czas rozprawić się ze zbyt często powtarzaną herezją, zanim stanie się prawdą… Elementem techniki kosztowej optymalizacji zapytań jest szacowanie kosztów alternatywnych planów wykonania zapytania. Odbywa się ono automatycznie podczas przetwarzania polecenia SQL przez optymalizator zapytań. Plan wykonania, którego szacowany koszt okazał się najniższy ze wszystkich rozważanych, jest wybierany jako plan do realizacji. Programista ma możliwość Read more about Podstawy Oracle Database: uwaga na koszt planu wykonania zapytania![…]

Podstawy Oracle Database: Undo-Redo, czyli dlaczego UPDATE jest tak powolny?

Przyjrzyjmy się dziś dość popularnemu problemowi wydajności masowej operacji UPDATE dokonującej modyfikacji bardzo dużej liczby rekordów. Spotykają się z nim najczęściej programiści implementujący zadania wsadowe. Dla celów demonstracji posłużymy się tabelą UPD_TEST o następującej strukturze: create table upd_test (c1 number(10), c2 char(1018)); Rozmiar kolumny C2 został tak dobrany, aby średnia długość rekordu oscylowała w okolicach Read more about Podstawy Oracle Database: Undo-Redo, czyli dlaczego UPDATE jest tak powolny?[…]

Hinty dla perspektyw

Hinty (wskazówki) są (niestety) dość popularnym narzędziem w rękach deweloperów usiłujących nakłonić kosztowy optymalizator zapytań do zastosowania wybranego (przez dewelopera) planu wykonania zapytania. Wiele hintów wymaga podania nazwy obiektu zapytania (tabeli, indeksu, itp.), w stosunku do którego chcemy wymusić określone zachowanie optymalizatora. Co jednak zrobić w przypadku, gdy zapytanie operuje na perspektywie, a chcemy użyć Read more about Hinty dla perspektyw[…]

Podstawy Oracle Database: alokacja pamięci PGA

Pamięć PGA (Program Global Area) serwera bazy danych Oracle Database 12c jest bezpośrednio wykorzystywana przez procesy Server Process obsługujące sesje użytkowników. W przeciwieństwie do SGA, PGA nie jest współdzielona przez wiele sesji – każda sesja ma do dyspozycji swoją odrębną prywatną część PGA. Preferowany sumaryczny rozmiar PGA dla wszystkich sesji może być ustalony przez administratora Read more about Podstawy Oracle Database: alokacja pamięci PGA[…]

Czy długi klucz = zły klucz?

Histogramy wykorzystujemy dość powszechnie w celu mniej lub bardziej precyzyjnego szacowania selektywności predykatów użytych w zapytaniach (oczywiście dla kolumn o nierównomiernym rozkładzie statystycznym). W pewnych przypadkach możemy jednak paść ofiarą uproszczenia zastosowanego przez Oracle podczas generowania histogramów, czego efektem będą złe/bardzo złe szacunki selektywności. Uproszczenie to dotyczy kolumn typu tekstowego i polega na uwzględnianiu w Read more about Czy długi klucz = zły klucz?[…]

Gdzie są moje histogramy? Słów kilka o SIZE AUTO

Dla poprawnego działania, kosztowy optymalizator zapytań musi posiadać wiedzę o rozkładzie wartości kolumny, na której oparty jest predykat w zapytaniu. Wiedzę taką może pozyskać na trzy sposoby: (1) pobierając losową próbkę danych w chwili wykonywania zapytania (dynamic sampling), (2) posługując się wcześniej zebranymi statystykami podstawowymi i przyjmując rozkład jednorodny wartości, (3) posługując się zebranym wcześniej Read more about Gdzie są moje histogramy? Słów kilka o SIZE AUTO[…]

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[…]

Uwaga na starą tabelę PLAN_TABLE

Nie każdy administrator serwera bazy danych Oracle Database 10g/11g/12c zauważył, że wiele lat temu Oracle zmienił podejście do tworzenia tabeli PLAN_TABLE (wykorzystywanej do pobierania planu wykonania zapytania). O ile dawno temu musieliśmy ją budować samodzielnie za pomocą skryptu utlxplan.sql, oddzielnie w schemacie każdego zainteresowanego użytkownika, to począwszy od wersji 10g tabela PLAN_TABLE jest automatycznie tworzona Read more about Uwaga na starą tabelę PLAN_TABLE[…]