Dane w pamięci
-
- 06.11.2013
Indeksy nie będą potrzebne
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.
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.