Najbardziej zaawansowana baza danych Open Source właśnie otrzymała ogromną aktualizację.
Oto przegląd najważniejszych nowości, które warto znać:
✨ Wydajność na pierwszym miejscu
✅ Asynchroniczne I/O (AIO): To prawdziwa rewolucja! Nowy podsystem pozwala na równoległe kolejkowanie żądań odczytu, co może przyspieszyć operacje skanowania sekwencyjnego, skanowania bitmapowego czy VACUUM nawet 2-3 razy . Szczególnie efektywne na Linuxie z io_uring .
✅ Skip Scan w indeksach B-tree: Indeks złożony (kategoria, data) może być teraz użyty nawet w zapytaniu filtrującym tylko po dacie! Optymalizator „przeskakuje” przez różne wartości kolumny wiodącej, co eliminuje potrzebę tworzenia dodatkowych indeksów .
✅ Optymalizacja zapytań: Samoeliminacja niepotrzebnych samozłączeń, szybsze przetwarzanie INTERSECT/EXCEPT oraz lepsze wsparcie dla tabel partycjonowanych .
💻 Lepsze doświadczenie developerskie
✅ Wirtualne kolumny generowane (domyślnie): Kolumny obliczane są teraz domyślnie wirtualne – ich wartość jest generowana „w locie” podczas odczytu, oszczędzając miejsce na dysku i przyspieszając operacje INSERT/UPDATE .
✅ UUIDv7: Nowa funkcja uuidv7() generuje identyfikatory z uporządkowanym chronologicznie prefiksem. To ogromna korzyść dla wydajności indeksów B-tree w porównaniu z losowymi UUIDv4, idealne dla systemów rozproszonych .
✅ Ulepszona klauzula `RETURNING`: Możliwość odwołania się zarówno do starych (OLD), jak i nowych (NEW) wartości wiersza w pojedynczej klauzuli, co upraszcza śledzenie zmian .
🔒 Bezpieczeństwo i operacje
✅ Uwierzytelnianie OAuth 2.0: Natywne wsparcie dla nowoczesnych dostawców tożsamości (jak Okta czy Keycloak) poprzez pg_hba.conf. Krok w stronę eliminacji haseł i ułatwienie Single Sign-On (SSO) .
✅ Deprecjacja MD5: Uwierzytelnianie MD5 jest oficjalnie oznaczone jako przestarzałe – to ostatni dzwonek na migrację do bezpieczniejszego SCRAM-SHA-256 .
✅ Gładkie aktualizacje major: Narzędzie pg_upgrade zachowuje teraz statystyki optymalizatora, co znacznie skraca czas dotarcia do pełnej wydajności po aktualizacji. Dodatkowo, domyślnie włączane są sumy kontrolne danych (checksums) dla lepszego wykrywania uszkodzeń .
✅ Lepsza obserwowalność: Rozszerzone możliwości EXPLAIN ANALYZE (m.in. statystyki WAL i CPU), szczegółowe statystyki I/O na backend oraz timing operacji VACUUM/ANALYZE w widokach systemowych .
ℹ️ Inne godne uwagi zmiany
✅ NOT NULL jako NOT VALID: Możliwość dodania ograniczenia NOT NULL do dużych tabel bez natychmiastowego blokowania i skanowania całej tabeli .
✅ Ogólnoustrojowe ograniczenia temporalne (`WITHOUT OVERLAPS`): Możliwość definiowania ograniczeń unikalności dla danych oznaczonych w czasie, aby zapobiec nakładaniu się okresów .
✅ Aktualizacja protokołu sieciowego: Pierwsza od ponad 20 lat – do wersji 3.2 .
Pełen opis zmian: https://www.postgresql.org/about/news/postgresql-18-released-3142/