Dane w pamięci

Indeksy nie będą potrzebne

Siedem tysięcy razy szybciej

Aby porównać prędkość pracy bazy, zaczytano tabelę wyszukiwań z Wikipedii zawierającą 3 mld rekordów. Za pomocą indeksów wyszukiwanie odbywało się z prędkością 2 mln wierszy na sekundę, po włączeniu opcji in memory i usunięciu niepotrzebnych już indeksów przetwarzanie to odbyło się ponad 7 tys. razy szybciej. Należy przy tym pamiętać, że do pamięci RAM nie trzeba ładować całej bazy – niekiedy wystarczy zadeklarowanie opcji in memory dla pojedynczej silnie obciążonej tabeli lub przestrzeni tabel.

Dzięki wykorzystaniu szybkości pamięci operacyjnej baza Oracle 12c (z włączoną opcją in memory dla danego obiektu, np. tabeli, przestrzeni tabel) może przechowywać dane w obu formatach (kolumnowym i wierszowym) jednocześnie. Wstawienie krotki powoduje automatyczną i natychmiastową aktualizację danych kolumnowych, co jest możliwe m.in. dzięki szybkości pracy pamięci RAM.

Wstawienie wiersza w starszej wersji bazy wymagało aktualizacji indeksów. Przy znacznej ich liczbie (zdarzają się bazy, w których wstawienie krotki wymuszało aktualizację 20 indeksów i więcej) narzut jest duży, gdyż motor bazodanowy musi sprawdzić, które indeksy należy aktualizować, musi przeprowadzić samą aktualizację, co zwalnia przetwarzanie transakcji. W przypadku opcji in memory nie trzeba aktualizować indeksów, gdyż wyszukiwanie kolumnowe jest realizowane za pomocą składowania danych w formacie kolumnowym (column store).

W efekcie kombinacji otrzymuje się przyspieszenie do 100 razy przy zapytaniach analitycznych i kilkakrotne przy zapytaniach wierszowych, a przetwarzanie połączeń JOIN zamienia się na szybkie skanowanie kolumn. Zmiany przy zastosowaniach raportowych zwykle skutkują przyspieszeniem pracy rzędu 20 razy. Do tego efektu należy dodać różnicę prędkości pracy wynikającą z szybkości samego medium składowania informacji. Przyspieszenie w niektórych przypadkach może sięgać nawet kilku tysięcy razy.

Przykładowy serwer wyposażony w niewielki procesor z 16 rdzeniami skanuje kolumny w tempie miliardów rzędów lub kolumn na sekundę. Operacje są zrównoleglone i wykorzystują instrukcje wektorowe obecne w nowoczesnych procesorach. Ponieważ dane są w pamięci i nie ma do nich osobnych transakcji, narzut na aktualizację w wersji in memory jest bardzo niski.

Z uwagi na fakt, że cała zmiana dotyczy mechanizmów wewnętrznych bazy danych, opcja in memory działa z każdą aplikacją, która obecnie działa z bazą 12c. Dostępne są wszystkie opcje, działa skalowanie poziome (klaster RAC), dostępne są opcje ASM i RMAN.


TOP 200