Siódma wersja beta OrioleDB, wysoce wydajnego silnika storage dla PostgreSQL

Przedstawiono beta-wersję silnika przechowywania OrioleDB beta7 oraz opublikowano wyniki nowych testów, które pokazują znaczną poprawę wydajności w porównaniu do tradycyjnego PostgreSQL. W wersji beta7 wprowadzono optymalizacje mające na celu poprawę wydajności w warunkach obciążenia wielowątkowego oraz przyspieszenie operacji odczytu i zapisu. Pierwsze stabilne wydanie OrioleDB planowane jest na 2025 rok. Silnik został napisany w języku C i jest dystrybuowany na licencji PostgreSQL, podobnej do licencji BSD i MIT.

Projekt OrioleDB rozwija alternatywny silnik przechowywania dla PostgreSQL, zaprojektowany w celu przezwyciężenia ograniczeń standardowego mechanizmu przechowywania i zwiększenia ogólnej efektywności systemu. Na przykład, OrioleDB pozwala na obejście konieczności okresowego wykonywania operacji VACUUM w celu usuwania nieużywanych danych, dzięki wdrożeniu mechanizmu MVCC (Multi-Version Concurrency Control) opartego na logach wycofania (undo logs), działających na poziomie poszczególnych bloków i wierszy, a także systemu automatycznego łączenia stron zawierających dane. OrioleDB wykorzystuje również 64-bitowe identyfikatory transakcji, co rozwiązuje problem przepełnienia liczników.

Aby uprościć wykorzystanie w rozproszonych systemach i zrównoleglić operacje w OrioleDB, zorganizowano prowadzenie dziennika WAL transakcji na poziomie wierszy. Podczas wykonywania operacji UPDATE możliwe jest zastępowanie danych w miejscu (bez uwalniania bieżącego rekordu i tworzenia nowego), co pozytywnie wpływa na wydajność. W OrioleDB zrealizowano również takie możliwości, jak odczyt stron z danymi bez użycia blokad, bezpośrednie powiązanie stron w pamięci operacyjnej ze stronami w pamięci trwałej, zastosowanie mechanizmu CoW (copy-on-write) podczas ustalania punktów kontrolnych w celu tworzenia spójnych zrzutów w dowolnym momencie, oraz tryb przechowywania danych w skompresowanej formie przy użyciu algorytmu ZSTD.

W siódmej wersji beta OrioleDB zauważono ograniczenia, takie jak możliwość używania wyłącznie indeksów w formacie B-drzewo (wsparcie dla wszystkich typów indeksów PostgreSQL pojawi się w przyszłości), a także brak wsparcia dla wstępnie przygotowanych transakcji (PREPARE TRANSACTION) oraz polecenia „REINDEX” w trybie „CONCURRENTLY”. OrioleDB wdrożono w formie rozszerzenia, które wymaga zmian w głównym kodzie PostgreSQL.

W testach wydajności TPC-C, które modelują obciążenie przetwarzania transakcyjnego w warunkach rzeczywistych, siódma wersja beta OrioleDB wykazała znaczną przewagę nad standardowym silnikiem PostgreSQL. Testowanie przeprowadzono z różną liczbą jednocześnie działających klientów, aby ocenić skalowalność i wydajność systemu przy rosnącym obciążeniu.

W testach oceniających przepustowość transakcji, silnik OrioleDB osiągnął wyższą przepustowość, mierzona w transakcjach na minutę (tpmC). Wraz ze wzrostem liczby klientów wydajność OrioleDB nadal rosła liniowo, podczas gdy w silniku Heap w PostgreSQL zauważono tendencję do stagnacji, a nawet spadku po osiągnięciu pewnego progu.

Siódma wersja beta OrioleDB, wysoce wydajnego silnika storage dla PostgreSQL
Siódma wersja beta OrioleDB, wysoce wydajnego silnika storage dla PostgreSQL
Siódma wersja beta OrioleDB, wysoce wydajnego silnika storage dla PostgreSQL

W testach czasu reakcji średni czas odpowiedzi transakcji w OrioleDB był znacząco niższy w porównaniu do PostgreSQL. Tak więc, systemy oparte na OrioleDB mogą obsługiwać więcej transakcji w tym samym okresie czasu, zapewniając szybsze przetwarzanie zapytań. Przy pomiarze wykorzystania zasobów, silnik OrioleDB wykazał bardziej efektywne wykorzystanie CPU i pamięci, dzięki zoptymalizowanemu zarządzaniu zasobami.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster