ĂshtĂ« prezantuar versioni i DB-sĂ« MariaDB 12.3.2, i cili shĂ«nohet si lĂ«shimi i parĂ« stabil i rrethit 12.3. Rremi MariaDB 12.3 i pĂ«rket lĂ«shimeve me mbĂ«shtetje tĂ« gjatĂ« dhe do tĂ« mbĂ«shtetet deri nĂ« qershor 2029. NdĂ«rkohĂ«, Ă«shtĂ« nĂ« dispozicion lĂ«shimi MariaDB 13.0.1, i cili ka statusin e kandidat-lĂ«shimeve.
Projekti MariaDB zhvillon një degë nga MySQL, duke ruajtur përputhshmërinë prapa dhe duke u dalluar nga integrimi i motorëve të ruajtjes shtesë dhe mundësive të zgjeruara. Zhvillimi i MariaDB mb supervisohet nga organizata e pavarur MariaDB Foundation në përputhje me një proces të hapur dhe transparent zhvillimi, pa u mbështetur në prodhues të veçantë. MariaDB ofrohet në vend të MySQL në shumë shpërndarje të Linux (RHEL, SUSE, Fedora, openSUSE, Slackware, OpenMandriva, ROSA, Arch Linux, Debian) dhe është implementuar në projekte të mëdha si Wikipedia, Google Cloud SQL dhe Nimbuzz.
Mes ndryshimeve në rremi MariaDB 12.3 krahasuar me lëshimin e kaluar LTS MariaDB 11.8:
- Implementimi i logarit binar (binlog) është riformuar plotësisht, me komponentët kryesorë të tij të transferuar në motorin InnoDB. Ky transferim ka lejuar heqjen e logjikës së vjetëruar të sinkronizimit, duke përshpejtuar riplikimin dhe përmirësuar performancën e operacioneve të lidhura me regjistrimin e të dhënave. Në testimin e implementimit të ri në sisteme me ngarkesë të lartë, është vënë re një rritje e performancës në lidhje me numrin e madh të operacioneve të regjistrimit deri në 4 herë. Për aktivizimin është propozuar konfigurimi "binlog_storage_engine=innodb".
- Shpejtësia e kërkimit vektorial me përdorimin e tipit VECTOR, i aplikuar në sistemet e mësimit makinerik, është rritur me 30-50%. Ky përshpejtim arrihet përmes optimizimit të llogaritjeve gjatë kërkimit të ngjashmërisë midis vektorëve në hapësira shumë dimensionale dhe realizimit të një teknike të re ekztrapolimi mbi bazën e përfaqësimeve të brendshme vektoriale (matryoshka embedding).
- Shtohen mundësitë për të lehtësuar migrimin nga DBMS Oracle. Në modalitetin e përputhshmërisë me DBMS Oracle janë implementuar funksionet TO_NUMBER (konvertimi i vargut në numër), TO_DATE (konvertimi i vargut në datë) dhe TRUNC (prerja e datës, për shembull, deri në orë, ditë, muaj, vit), si dhe është shtuar mbështetje për array asociasive (INDEX BY) dhe sintaksën "( + )" për përcaktimin e bashkimeve të jashtme (outer join).
- Për të përmirësuar përputhshmërinë me MySQL, është shtuar plugin-i i autentikimit caching_sha2_password, i cili përdor algoritmin SHA2 për hashing në vend të SHA1 dhe është në përputhje me plugin-in e njëjtë nga MySQL 9.
- ĂshtĂ« shtuar njĂ« tip i ri XMLTYPE pĂ«r tĂ« ruajtur tĂ« dhĂ«nat nĂ« formatin XML.
- ĂshtĂ« realizuar mundĂ«sia e pĂ«rdorimit tĂ« kursoreve me pyetje parametrizuese (prepared statement).
- ĂshtĂ« shtuar shprehja "SET PATH" pĂ«r tĂ« pĂ«rcaktuar rendin e kĂ«rkimit tĂ« komponenteve tĂ« skemĂ«s sĂ« ruajtjes kur i aksesojmĂ« ato pa specifikuar emrin e skemĂ«s.
- ĂshtĂ« realizuar mbĂ«shtetje pĂ«r operacionin "IS JSON" pĂ«r tĂ« verifikuar llojin e shprehjes JSON, i caktuar nĂ« standardin SQL:2023.
- Në shprehjen "PARTITION BY KEY" është realizuar mbështetje për algoritmet e hash-it MYSQL51, MYSQL55, BASE31, CRC32C, XXH32 dhe XXH3.
- Në motorin e ruajtjes Aria është realizuar një cache segmentar i çelësave, ku çelësat ndahen në grupe dhe ruhen në segmente të veçanta të cache-it. Cache-i i ri ka lejuar përmirësimin e performancës së ekzekutimit të paralel të kërkesave nga përdorues të ndryshëm. Numri i segmenteve caktohet nëpërmjet ndryshoreve aria_pagecache_segments, e cila mund të marrë vlera nga 1 (default) deri në 128.
- Shtuar mundësia e përdorimit të indekseve të bazuar në funksione (functional index) për të rritur performancën e operacioneve GROUP/ORDER BY.
- Implementuar mbështetje për shprehjen «CREATE GLOBAL TEMPORARY TABLE» për krijimin e tabelave globale të përkohshme. Të tilla tabela të përkohshme fshihen pas përfundimit të seancës dhe janë të dukshme për të gjithë përdoruesit, por përmbajnë të dhëna, të cilat janë individuale për çdo përdorues.
- Shtuar mbështetje për SSL-çelësa të mbrojtur me fjalëkalim. Fjalëkalimi për çelësat e SSL mund të caktohet përmes ndryshoreve ssl_passphrase ose manualisht gjatë startimit server.
- Shtuar shprehjen «SET SESSION AUTHORIZATION» për të kryer veprime nën një përdorues të ndryshëm duke caktuar privilegje përkatëse (shprehja mund të trajtohet si e barabartë me «sudo» për DBMS).
- Në pluginin file_key_management.so është shtuar mbështetje për hashes SHA-2.
- ĂshtĂ« shtuar mbĂ«shtetje pĂ«r variablat e dobĂ«t tĂ« kursorit (weak cursor variable) tĂ« tipit tĂ« paracaktuar SYS_REFCURSOR, qĂ« lejojnĂ« kthimin e njĂ« kursori nga procedurat e ruajtura (nĂ« parametrin OUT) ose nga funksionet (nĂ« shprehjen RETURN). PĂ«r tĂ« kufizuar numrin maksimal tĂ« kursoreve tĂ« hapur njĂ«kohĂ«sisht Ă«shtĂ« shtuar variabla sistemike «max_open_cursors».
- Në tipin TO_CHAR është shtuar mbështetje për formatin FM (Fill Mode) për të përjashtuar mbushjen shtesë. Për shembull, kërkesa
«SELECT CONCAT(â/â, TO_CHAR(â2020-01-06 10:11:12â, âFMDAYâ), â/â);» do tĂ« kthejĂ« «/E hĂ«nĂ«/» nĂ« vend tĂ« «/E hĂ«nĂ« /». - NĂ« utilitarin mariadb-check dhe shprehjen CHECK TABLE Ă«shtĂ« shtuar mbĂ«shtetje pĂ«r tabelat nga motorin SEQUENCE.
- Në optimizues është shtuar mbështetje për opsione (hint), që ndikojnë në ndërtimin e planit të optimizimeve: 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 dhe [NO_]MERGE. Opsionet vendosen në kërkesë në një format, kompatibil me MySQL, për shembull:
SELECT /*+ BKA(t1) NO_BKA(t2) */ * FROM t1 INNER JOIN t2 WHERE âŠ;
SELECT /*+ MAX_EXECUTION_TIME(1000) */ * FROM t1 INNER JOIN t2 WHERE âŠ; - Performanca e shprehjeve tĂ« paklasifikuara «LEFT JOIN» dhe skanimi i renditur Ă«shtĂ« pĂ«rmirĂ«suar kur pĂ«rdoret shprehja «PARTITION BY RANGE».
- Në rezultatet e gjurmimit të optimizuesit është siguruar tregimi i definicioneve
tabelave dhe pamjeve. - Gjatë ekzekutimit të operacioneve të bashkimit (JOIN) është realizuar një optimizim që merr parasysh unikatesën e rreshtave në nënkërkesat me shprehjen «GROUP BY» për një parashikim më të saktë të numrit të rreshtave rezultues (out_rows) dhe përdorimin e saktë të indekseve.
- Janë përmirësuar shkallëzueshmëria e bllokimeve MDL (Metadata Lock).
- Janë shtuar mbështetje për funksione të reja GIS (Sistemi Informativ Gjeografik):
ST_Validate, MBRCoveredBy, ST_Simplif, ST_GeoHash, ST_LatFromGeoHash, ST_LongFromGeoHash, ST_PointFromGeoHash, ST_IsValid, ST_Collect. - Janë shtuar mbështetje për triggere që aktivizohen për disa ngjarje. Në shprehjen CREATE TRIGGER tani mund të listohen ngjarjet përkatëse duke përdorur sintaksën «{ event [ OR ⊠] }».
- Në plugin-in për mbajtjen e logs-it të audites është shtuar mbështetje për tamponizimin e operacionit të regjistrimit në log. Madhësia e tamponit përcaktohet përmes variablës server_audit_file_buffer_size.
Kjo veçori ruan informacionin mbi portet e rrjetit pĂ«r lidhjet e ardhshme nĂ« logun e auditi (mĂ« parĂ« hoqej vetĂ«m hosti). - NĂ« utilitarin mariadb Ă«shtĂ« shtuar opsioni «âscript-dir» pĂ«r tĂ« caktuar njĂ« katalog alternativ pĂ«r kĂ«rkimin e skripteve qĂ« ekzekutohen me komandĂ«n SOURCE.
- Lejohet përdorimi i replikimit në një modalitet paralel gjatë replikimit asinkron të të dhënave ndërmjet dy klasterave Galera.
- NĂ« utilitarin mariadb-dump Ă«shtĂ« shtuar mundĂ«sia pĂ«r tĂ« specifikuar maska (p.sh., «database_*»), duke pĂ«rdorur opsionin «-L» (âwildcards).
- Kërkesa për unikësinë e identifikatorëve të çelësave të jashtëm (foreign key) është hequr në kontekstin e gjithë DB-së (mjafton unikësia në nivelin e tabelës).
- Kufizimet mbi nivelin e thellësisë së strukturave në funksionet për punë me JSON janë hequr (u hoq kufiri JSON_DEPTH_LIMIT, i cili më parë merrte vlerën 32).
- Shtuar tabela TRIGGERED_UPDATE_COLUMNS në skemën INFORMATION_SCHEMA (INFORMATION_SCHEMA.TRIGGERED_UPDATE_COLUMNS), e cila tregon kolonat që ndryshojnë kur aktivizohet një trigger.
- Në tabelën PARAMETERS në skemën INFORMATION_SCHEMA është realizuar kolona PARAMETER_DEFAULT, e cila përmban vlerat e paracaktuara të parametrave të procedurave të ruajtura.
- Janë hequr variablat big_tables, large_page_size dhe storage_engine, të cilat më parë ishin shpallur të vjetruara.
Burimi: opennet.ru
