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

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

Eksperymenty z CURSOR_SHARING

Jednym z bardziej popularnych parametrów konfiguracyjnych jest CURSOR_SHARING, umożliwiający sterowanie współdzieleniem kursorów i planów wykonania zapytań (pojawił się w 8.1.6). Może przyjąć jedną z trzech wartości: EXACT (domyślna), SIMILAR, FORCE, przy czym Oracle zapowiedział wycofanie opcji SIMILAR (już nawet w wersji 11g [ogłoszenie ID 1169017.1], jednak jest nadal dostępna). Parametr CURSOR_SHARING jest reklamowany jako lekarstwo Read more about Eksperymenty z CURSOR_SHARING[…]

Wyłączanie użycia ścieżki bezpośredniej przy pełnym odczycie tabeli (Oracle Database 11g)

Jednym z ciekawszych mechanizmów prowadzenia dyskowego wejścia/wyjścia w Oracle Database 11g jest realizacja pełnego odczytu tabeli (full table scan) metodą ścieżki bezpośredniej (direct path). Idea ścieżki bezpośredniej polega na pomijaniu bufora Buffer Cache i odczytywaniu bloków tabeli z dysku bezpośrednio do PGA. Dzięki temu możliwa jest poprawa wydajności operacji pełnego odczytu tabeli (brak narzutów związanych Read more about Wyłączanie użycia ścieżki bezpośredniej przy pełnym odczycie tabeli (Oracle Database 11g)[…]

Wykonywanie testów wydajnościowych TPC-C: narzędzie HammerDB

Jednym z trudniejszych zadań wdrożeniowych jest ocena i dobór wydajnej platformy sprzętowo-systemowej dla serwera bazy danych. Z powodu trudności w analitycznym szacowaniu wydajności serwera na planowanej platformie, powszechnie wykonujemy porównawcze testy wydajnościowe (benchmarki). Bardzo popularnym, standardowym benchmarkiem wydajnościowym jest TPC-C, opracowany we wrześniu 1992 roku przez organizację TPC. Benchmark TPC-C jest zorientowany na badanie wydajności Read more about Wykonywanie testów wydajnościowych TPC-C: narzędzie HammerDB[…]