Opublikowano nową wersję LTS bazy danych MariaDB 12.3

Wydany został system zarządzania bazą danych MariaDB 12.3.2, który został oznaczony jako pierwsza stabilna wersja gałęzi 12.3. Gałąź MariaDB 12.3 została zakwalifikowana do wydań z długoterminowym wsparciem i będzie wspierana do czerwca 2029 roku. Jednocześnie dostępna jest wersja MariaDB 13.0.1, mająca status kandydata do wydania.

Projekt MariaDB rozwija fork MySQL, zachowując zgodność wsteczną i różniąc się integracją dodatkowych silników przechowywania oraz rozszerzonymi możliwościami. Rozwój MariaDB nadzoruje niezależna organizacja MariaDB Foundation w ramach otwartego i przejrzystego procesu rozwoju, niezależnego od konkretnych producentów. MariaDB jest dostarczana zamiast MySQL w wielu dystrybucjach Linuxa (RHEL, SUSE, Fedora, openSUSE, Slackware, OpenMandriva, ROSA, Arch Linux, Debian) i wdrożona w takich dużych projektach jak Wikipedia, Google Cloud SQL i Nimbuzz.

Wśród zmian w gałęzi MariaDB 12.3 w porównaniu do poprzedniej wersji LTS MariaDB 11.8:

  • Całkowicie przebudowana została implementacja dziennika binarnego (binlog), a główne komponenty jego obsługi przeniesiono do silnika InnoDB. Taka migracja pozwoliła pozbyć się przestarzałej logiki synchronizacji, przyspieszyć replikację oraz zwiększyć wydajność operacji związanych z zapisywaniem danych. W testach nowej implementacji na systemach o dużym obciążeniu odnotowano wzrost wydajności w przypadku dużej liczby operacji zapisu do 4 razy. Aby to włączyć, proponuje się ustawienie „binlog_storage_engine=innodb”.
  • Zwiększono szybkość wyszukiwania wektorowego o 30-50% przy użyciu typu VECTOR, stosowanego w systemach uczenia maszynowego. Przyspieszenie osiągnięto dzięki optymalizacji obliczeń podczas wyszukiwania podobieństw między wektorami w przestrzeniach wielowymiarowych oraz wprowadzeniu nowej techniki ekstrapolacji opartej na zagnieżdżonych reprezentacjach wektorowych (matryoshka embedding).
  • Dodano możliwości ułatwiające migrację z systemu baz danych Oracle. W trybie zgodności z bazą danych Oracle zaimplementowano funkcje TO_NUMBER (konwersja ciągu znaków na liczbę), TO_DATE (konwersja ciągu znaków na datę) oraz TRUNC (przycinanie daty, na przykład do godziny, dnia, miesiąca, roku), a także dodano wsparcie dla tablic asocjacyjnych (INDEX BY) oraz składni „( + )” do definiowania zewnętrznych złączeń (outer join).
  • Aby zwiększyć zgodność z MySQL, dodano wtyczkę uwierzytelniania caching_sha2_password, wykorzystującą do hash'owania algorytm SHA2 zamiast SHA1 i kompatybilną z wtyczką o tej samej nazwie z MySQL 9.
  • Dodano nowy typ XMLTYPE do przechowywania danych w formacie XML.
  • Wprowadzono możliwość korzystania z kursorów z zapytaniami parametryzowanymi (prepared statement).
  • Dodano wyrażenie „SET PATH” do określenia kolejności wyszukiwania komponentów schematu przechowywania podczas odwoływania się do nich bez podawania nazwy schematu.
  • Wprowadzono wsparcie dla operacji „IS JSON” w celu sprawdzenia typu wyrażenia JSON, określonego w standardzie SQL:2023.
  • W wyrażeniu „PARTITION BY KEY” zaimplementowano wsparcie dla algorytmów haszowania MYSQL51, MYSQL55, BASE31, CRC32C, XXH32 i XXH3.
  • W silniku przechowywania Aria zaimplementowano segmentowaną pamięć podręczną kluczy, w której klucze dzielone są na grupy przechowywane w osobnych segmentach pamięci. Nowa pamięć podręczna pozwoliła zwiększyć wydajność równoległego wykonywania zapytań przez różnych użytkowników. Liczba segmentów jest określana przez zmienną aria_pagecache_segments, która może przyjmować wartości od 1 (domyślnie) do 128.
  • Dodano możliwość używania indeksów opartych na funkcjach (functional index) w celu zwiększenia wydajności operacji GROUP/ORDER BY.
  • Wprowadzono wsparcie dla wyrażenia „CREATE GLOBAL TEMPORARY TABLE” do tworzenia globalnych tabel tymczasowych. Tego typu tabele tymczasowe są usuwane po zakończeniu sesji i są widoczne dla wszystkich użytkowników, ale zawierają dane indywidualne dla każdego użytkownika.
  • Dodano wsparcie dla SSL-kluczy, zabezpieczonych hasłem. Hasło do odblokowania certyfikatów SSL można ustawić za pomocą zmiennej ssl_passphrase lub ręcznie podczas uruchamiania. serwera.
  • Dodano wyrażenie «SET SESSION AUTHORIZATION» do wykonania operacji w imieniu innego użytkownika przy przyznaniu odpowiednich uprawnień (wyrażenie to można uznać za odpowiednik «sudo» dla baz danych).
  • Wtyczka file_key_management.so zyskała wsparcie dla hashy SHA-2.
  • Dodano wsparcie dla słabych zmiennych kursorowych (weak cursor variable) typu SYS_REFCURSOR, umożliwiających zwracanie kursora z procedur składowanych (w parametrze OUT) lub z funkcji (w wyrażeniu RETURN). W celu ograniczenia maksymalnej liczby równocześnie otwartych kursorów dodano zmienną systemową «max_open_cursors».
  • Do typu TO_CHAR dodano wsparcie dla formatu FM (Fill Mode), aby wykluczyć dodatkowe wypełnienie. Na przykład zapytanie
    „SELECT CONCAT(‘/’, TO_CHAR(‘2020-01-06 10:11:12’, ‘FMDAY’), ‘/’);” zwróci „/Monday/” zamiast „/Monday /”.
  • Do narzędzia mariadb-check i wyrażenia CHECK TABLE dodano wsparcie dla tabel z silnika SEQUENCE.
  • W optymalizatorze dodano wsparcie dla opcji (hint), wpływających na tworzenie planu optymalizacji: QB_NAME, NO_RANGE_OPTIMIZATION, NO_ICP, MRR, NO_MRR, BKA, NO_BKA, BNL, NO_BNL, SEMIJOIN, SUBQUERY, JOIN_FIXED_ORDER, JOIN_ORDER, JOIN_PREFIX, JOIN_SUFFIX, MAX_EXECUTION_TIME, [NO_]JOIN_INDEX, [NO_]GROUP_INDEX, [NO_]ORDER_INDEX, [NO_]INDEX, [NO_]SPLIT_MATERIALIZED, NO_ROWID_FILTER, INDEX_MERGE/NO_INDEX_MERGE, [NO_]DERIVED_CONDITION_PUSHDOWN i [NO_]MERGE. Opcje wstawiane są w zapytaniu w formacie zgodnym z MySQL, na przykład:

    SELECT /*+ BKA(t1) NO_BKA(t2) */ * FROM t1 INNER JOIN t2 WHERE …;
    SELECT /*+ MAX_EXECUTION_TIME(1000) */ * FROM t1 INNER JOIN t2 WHERE …;

  • Zwiększono wydajność nieuporządkowanych wyrażeń „LEFT JOIN” i uporządkowanego skanowania przy użyciu wyrażenia „PARTITION BY RANGE”.
  • W wynikach śledzenia optymalizatora zapewniono pokaz definicji
    tabel i widoków.
  • Przy wykonywaniu operacji łączenia tabel (JOIN) wprowadzono optymalizację, która uwzględnia unikalność wierszy w podzapytaniach z wyrażeniem „GROUP BY” dla dokładniejszego prognozowania liczby wynikowych wierszy (out_rows) i poprawnego stosowania indeksów.
  • Poprawiono skalowalność blokad MDL (Metadata Lock).
  • Dodano wsparcie dla nowych funkcji GIS (Geographic Information System):
    ST_Validate, MBRCoveredBy, ST_Simplif, ST_GeoHash, ST_LatFromGeoHash, ST_LongFromGeoHash, ST_PointFromGeoHash, ST_IsValid, ST_Collect.
  • Dodano wsparcie dla triggerów, które uruchamiają się przy wielu zdarzeniach. W wyrażeniu CREATE TRIGGER można teraz wymieniać zdarzenia, których dotyczy, używając składni «{ event [ OR … ] }».
  • Do wtyczki do prowadzenia logu audytu dodano wsparcie dla buforowania operacji zapisu do logu. Rozmiar bufora jest określany przez zmienną server_audit_file_buffer_size.
    Zrealizowano zapis informacji o portach sieciowych dla nadchodzących połączeń w dzienniku audytu (wcześniej wyświetlany był tylko host).
  • Do narzędzia mariadb dodano opcję „—script-dir” do określenia alternatywnego katalogu wyszukiwania skryptów uruchamianych poleceniem SOURCE.
  • Zezwolono na wykorzystanie replikacji w trybie równoległym podczas asynchronicznej replikacji danych między dwoma klastrami Galera.
  • Do narzędzia mariadb-dump dodano możliwość wskazania masek (na przykład „database_*”), korzystając z opcji „-L” (—wildcards).
  • Usunięto wymóg unikalności identyfikatorów kluczy obcych (foreign key) w kontekście całej bazy danych (wystarczająca jest unikalność na poziomie tabeli).
  • Usunięto ograniczenia dotyczące głębokości zagnieżdżania struktur w funkcjach do pracy z JSON (usunięto limit JSON_DEPTH_LIMIT, który wcześniej wynosił 32).
  • Dodano tabelę TRIGGERED_UPDATE_COLUMNS w schemacie INFORMATION_SCHEMA (INFORMATION_SCHEMA.TRIGGERED_UPDATE_COLUMNS), pokazującą kolumny modyfikowane podczas wyzwolenia triggera.
  • W tabeli PARAMETERS w schemacie INFORMATION_SCHEMA zaimplementowano kolumnę PARAMETER_DEFAULT, zawierającą domyślne wartości parametrów procedur składowanych.
  • Usunięto zmienne big_tables, large_page_size i storage_engine, które wcześniej były ogłoszone jako przestarzałe.

Ź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