24 września zespół deweloperów ogłosił wydanie kolejnej wersji Postgresql o numerze 13. W nowym wydaniu skupiono się głównie na zwiększeniu wydajności, przyspieszeniu wewnętrznych usług konserwacyjnych oraz uproszczeniu monitorowania bazy, a także na bardziej niezawodnej kontroli dostępu do systemu.
Prace nad optymalizacją indeksowania tabel były kontynuowane, szczególnie w zakresie przetwarzania duplikatów w indeksowanych danych w binarnych drzewach indeksów, co pozwoliło nie tylko przyspieszyć wykonanie zapytań, ale także zmniejszyć zajmowaną przez indeks przestrzeń dyskową.
Dodatkowo dodano algorytm inkrementalnego sortowania, który sprawia, że ponowne sortowanie już posortowanych danych z wcześniejszych etapów jest szybsze, a w niektórych zapytaniach można osiągnąć przyspieszenie dzięki zastosowaniu nowej rozszerzonej statystyki (poprzez polecenie CREATE STATISTICS) przy obliczaniu bardziej efektywnego planu krok po kroku.
Optymalizowano także wykonanie zapytań z kosztowną agregacją danych przez szersze stosowanie agregacji haszowanej oraz zapisywanie części agregowanych danych na dysku, jeśli nie mieszczą się w pamięci operacyjnej. Odnotowano znaczący wzrost prędkości łączenia tabel znajdujących się na różnych partycjach.
Znaczną pracę wykonano również w zakresie uproszczenia konserwacji i administracji bazami danych Postgresql. Wbudowane zadanie »odkurzania«, czyli wykorzystania zwolnionego miejsca dyskowego po usunięciu lub nadpisaniu wierszy, może teraz być wykonywane w równoległych wątkach, a administrator ma możliwość określenia ich liczby. Dodatkowo wprowadzono nowe narzędzia do monitorowania bieżącej aktywności bazy oraz zapobiegnięto błędom przy synchronizacji dzienników zapisu między serwerem głównym a replikami, co mogło prowadzić do konfliktów przy wyłączaniu replik lub naruszenia integralności rozproszonej bazy po ich przywróceniu na podstawie danych z dziennika.
Wśród innowacji dla programistów warto wyróżnić funkcję datetime(), która przekształca różne standardowe formaty zapisu czasu na wbudowany typ Postgresql; dostępną z pudełka funkcję generowania UUID v4 gen_random_uuid(); normalizację pracy z Unicode; bardziej elastyczny system dystrybucji danych tabeli na powiązanych węzłach sieciowych bazy z pełną replikacją na poziomie logicznym, a także inne zmiany w zapytaniach oraz nowe dostępne dla replik wyzwalacze.
Kontrola dostępu do bazy uważana jest za jeden z kluczowych elementów systemu, a w nowej wersji w tym zakresie poczyniono znaczące kroki naprzód. Teraz instalacja rozszerzeń do bazy może być wykonywana tylko przez użytkownika z uprawnieniami (superużytkownika). Zwykli użytkownicy będą mogli samodzielnie instalować tylko te rozszerzenia, które oznaczą jako zaufane, lub niewielką liczbę rozszerzeń, które uznawane są za zaufane domyślnie (np. pgcrypto, tablefunc lub hstore). Przy autoryzacji użytkowników za pomocą mechanizmu SCRAM (przy pracy przez sterownik libpq) teraz wymagana jest „wiązanie kanału”, a funkcja opakowująca dla zewnętrznych danych postgres_fdw od wersji 13 obsługuje autoryzację na podstawie certyfikatu.
Źródło: linux.org.ru
