Objavljen je izlazak SUSTAVA ZA UPRAVLJANJE PODACIMA MariaDB 12.3.2, koji je označen kao prvo stabilno izdanje grane 12.3. Grana MariaDB 12.3 je klasificirana kao izdanje s dugotrajnim podrškom i bit će podržavana do जून 2029. godine. Istodobno je dostupno izdanje MariaDB 13.0.1, koje ima status kandidata za izdanje.
Projekt MariaDB razvija ogranak od MySQL-a koji zadržava unazad kompatibilnost i uključuje integraciju dodatnih sustava za pohranu i proširene mogućnosti. Razvoj MariaDB nadzire neovisna organizacija MariaDB Foundation u skladu s otvorenim i transparentnim procesom razvoja, neovisnim o pojedinačnim proizvođačima. MariaDB se isporučuje umjesto MySQL-a u mnogim distribucijama Linuxa (RHEL, SUSE, Fedora, openSUSE, Slackware, OpenMandriva, ROSA, Arch Linux, Debian) i koristi se u velikim projektima poput Wikipedije, Google Cloud SQL i Nimbuzz.
Među promjenama u grani MariaDB 12.3 u odnosu na prethodno LTS izdanje MariaDB 11.8:
- Potpuno je redizajnirana implementacija binarnog dnevnika (binlog), a osnovne komponente za njegovo vođenje premještene su u motor InnoDB. Ova premještanja omogućila su uklanjanje zastarjelih logika sinkronizacije, ubrzanje replikacije i povećanje performansi izvršavanja operacija vezanih uz zapis podataka. U testiranju nove implementacije na sustavima pod velikim opterećenjem zabilježen je porast performansi prilikom visokog broja operacija zapisivanja do 4 puta. Za uključivanje predložena je postavka "binlog_storage_engine=innodb."
- Povećana je brzina vektorske pretrage korištenjem tipa VECTOR, koji se primjenjuje u sustavima strojnog učenja, za 30-50%. Ubrzanje se postiže optimizacijom izračuna prilikom pretrage sličnosti između vektora u višedimenzionalnim prostorima i implementacijom nove tehnike ekstrapolacije na osnovu ugniježđenih vektorskih reprezentacija (matryoshka embedding).
- Dodane su mogućnosti za pojednostavljivanje migracije s SUSTAVA ZA UPRAVLJANJE PODACIMA Oracle. U načinu kompatibilnosti s SUSTAVOM ZA UPRAVLJANJE PODACIMA Oracle implementirane su funkcije TO_NUMBER (pretvorba stringa u broj), TO_DATE (pretvorba stringa u datum) i TRUNC (skraćivanje datuma, na primjer, do sata, dana, mjeseca, godine), a također je dodana podrška za asocijativne nizove (INDEX BY) i sintaksu "( + )" za definiranje vanjskih spajanja (outer join).
- Za povećanje kompatibilnosti s MySQL dodan je dodatak za autentifikaciju caching_sha2_password, koji koristi SHA2 algoritam umjesto SHA1 za heširanje i kompatibilan je s istim dodatkom iz MySQL 9.
- Dodana je nova vrsta XMLTYPE za pohranu podataka u XML formatu.
- Implementirana je mogućnost korištenja kursora s parametiziranim upitima (prepared statement).
- Dodana je naredba "SET PATH" za određivanje reda pretraživanja komponenti sheme pohrane prilikom njihove upotrebe bez navođenja imena sheme.
- Implementirana je podrška za operaciju "IS JSON" za provjeru tipa izraza JSON, definirane u standardu SQL:2023.
- U izrazu «PARTITION BY KEY» implementirana je podrška za algoritme heširanja MYSQL51, MYSQL55, BASE31, CRC32C, XXH32 i XXH3.
- U sustavu pohrane Aria implementiran je segmentirani predmemorijski ključ, gdje se ključevi dijele u grupe pohranjene u zasebnim segmentima predmemorije. Nova predmemorija omogućila je povećanje performansi paralelnog izvršenja upita od strane različitih korisnika. Broj segmenata postavlja se putem varijable aria_pagecache_segments, koja može primati vrijednosti od 1 (zadanih) do 128.
- Dodana je mogućnost korištenja indeksa temeljenih na funkcijama (functional index) za poboljšanje performansi operacija GROUP/ORDER BY.
- Implementirana je podrška za izraz «CREATE GLOBAL TEMPORARY TABLE» za kreiranje globalnih privremenih tablica. Ove privremene tablice se brišu nakon završetka sesije i vidljive su svim korisnicima, ali sadrže podatke individualne za svakog korisnika.
- Dodana podrška SSL-ključeva zaštićenih lozinkom. Lozinka za otključavanje SSL certifikata može se postaviti putem varijable ssl_passphrase ili ručno pri pokretanju poslužitelja.
- Dodano je izraz «SET SESSION AUTHORIZATION» za izvršavanje akcije pod drugim korisnikom uz odgovarajuće privilegije (ovaj izraz se može smatrati ekvivalentnim «sudo» za DBMS).
- U dodatak file_key_management.so dodana je podrška za SHA-2 heševe.
- Dodana je podrška za slabe kursorske varijable (weak cursor variable) unaprijed definirane vrste SYS_REFCURSOR, što omogućava vraćanje kursora iz pohranjenih procedura (u OUT parametru) ili iz funkcija (u izrazu RETURN). Za ograničavanje maksimalnog broja istovremeno otvorenih kursora dodana je sistemska varijabla «max_open_cursors».
- U tip TO_CHAR dodana je podrška za FM (Fill Mode) format kako bi se isključilo dodatno popunjavanje. Na primjer, upit
«SELECT CONCAT(‘/’, TO_CHAR(‘2020-01-06 10:11:12’, ‘FMDAY’), ‘/’);» vratit će «/Monday/» umjesto «/Monday /». - U alat mariadb-check i izraz CHECK TABLE dodana je podrška za tablice od mehanizma SEQUENCE.
- U optimizator je dodana podrška za opcije (hint) koje utječu na izradu plana optimizacije: 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. Opcije se umetnu u upit u formatu kompatibilnom s MySQL-om, na primjer:
SELECT /*+ BKA(t1) NO_BKA(t2) */ * FROM t1 INNER JOIN t2 WHERE …;
SELECT /*+ MAX_EXECUTION_TIME(1000) */ * FROM t1 INNER JOIN t2 WHERE …; - Povećana je učinkovitost neuređenih izraza «LEFT JOIN» i uređenog skeniranja prilikom korištenja izraza «PARTITION BY RANGE».
- U rezultatima traganja optimizatora osiguran je prikaz definicija
tablica i prikaza. - Prilikom izvođenja operacija spajanja tablica (JOIN) implementirana je optimizacija koja uzima u obzir jedinstvenost redaka u podupitima s izrazom "GROUP BY" radi preciznijeg predviđanja broja rezultantnih redaka (out_rows) i ispravne primjene indeksa.
- Poboljšana je skalabilnost MDL (Metadata Lock) zaključavanja.
- Dodana je podrška za nove GIS funkcije (Geographic Information System):
ST_Validate, MBRCoveredBy, ST_Simplif, ST_GeoHash, ST_LatFromGeoHash, ST_LongFromGeoHash, ST_PointFromGeoHash, ST_IsValid, ST_Collect. - Dodana je podrška za okidače koji se aktiviraju za više događaja. U izrazu CREATE TRIGGER sada se mogu nabrajati događaji koji se njime pokrivaju koristeći sintaksu "{ event [ OR … ] }".
- U dodatak za vođenje evidencije dodana je podrška za bufforiranje operacija zapisivanja u evidenciju. Veličina buffora postavlja se putem varijable server_audit_file_buffer_size.
Implementirano je evidentiranje informacija o mrežnim portovima za dolazne veze u revizijskom logu (ranije je odražavao samo host). - U alat mariadb dodana je opcija "—script-dir" za određivanje alternativnog direktorija za pretraživanje skripti koje se pokreću naredbom SOURCE.
- Omogućeno je korištenje replikacije u paralelnom režimu prilikom asinkrone replikacije podataka između dva klastera Galera.
- Alat mariadb-dump dobio je mogućnost specificiranja maski (npr., 'database_*') koristeći opciju '-L' (—wildcards).
- Uklonjen je zahtjev za jedinstvenošću identifikatora vanjskih ključeva (foreign key) u kontekstu cijele BDP-a (dovoljna je jedinstvenost na razini tablice).
- Uklonjena su ograničenja razine ugnježdenosti struktura u funkcijama za rad s JSON-om (ukinut je limit JSON_DEPTH_LIMIT koji je ranije iznosio 32).
- Dodana je tablica TRIGGERED_UPDATE_COLUMNS u shemu INFORMATION_SCHEMA (INFORMATION_SCHEMA.TRIGGERED_UPDATE_COLUMNS) koja prikazuje stupce koji se mijenjaju prilikom aktivacije okidača.
- U tablici PARAMETERS u shemi INFORMATION_SCHEMA implementiran je stupac PARAMETER_DEFAULT koji sadrži zadane vrijednosti parametara pohranjenih procedura.
- Uklonjene su varijable big_tables, large_page_size i storage_engine, ranije proglašene zastarjelima.
Izvor: opennet.ru
