Udgaven af databasen MariaDB 12.3.2 er blevet præsenteret, som er markeret som den første stabile udgivelse af version 12.3. Versionen MariaDB 12.3 er klassificeret som en LTS-udgivelse og vil blive supporteret indtil juni 2029. Samtidig er udgivelsen MariaDB 13.0.1 tilgængelig, som har status som en release candidate.
MariaDB projektet udvikler en gren fra MySQL, der bevarer bagudkompatibilitet og adskiller sig ved integrationen af yderligere lagringsmotorer og avancerede funktioner. Udviklingen af MariaDB styres af den uafhængige organisation MariaDB Foundation i henhold til en åben og gennemsigtig udviklingsproces, der ikke er afhængig af enkeltproducenter. MariaDB leveres i stedet for MySQL i mange Linux-distributioner (RHEL, SUSE, Fedora, openSUSE, Slackware, OpenMandriva, ROSA, Arch Linux, Debian) og er implementeret i store projekter som Wikipedia, Google Cloud SQL og Nimbuzz.
Blandt ændringerne i versionen MariaDB 12.3 i forhold til den forrige LTS-udgivelse MariaDB 11.8:
- Implementeringen af binær log (binlog) er blevet fuldstændig omarbejdet, hvor de vigtigste komponenter til den er flyttet til InnoDB-motoren. Denne flytning har gjort det muligt at eliminere forældet synkroniseringslogik, fremskynde replikationen og forbedre ydeevnen af operationer relateret til dataindsamling. Ved test af den nye implementering i højtydende systemer er der observeret en ydeevneforøgelse på op til 4 gange ved et stort antal dataindsamlingsoperationer. For at aktivere den, er en indstilling foreslået: "binlog_storage_engine=innodb".
- Hastigheden for vektorsøgning ved brug af typen VECTOR, der anvendes i maskinlæringssystemer, er blevet forbedret med 30-50%. Denne forbedring opnås gennem optimering af beregninger ved søgning efter lighed mellem vektorer i multidimensionale rum og implementeringen af en ny eksponeringsteknik baseret på matrjoška-embedding.
- Der er tilføjet funktioner for at lette migreringen fra databaserne Oracle. I kompatibilitetsmodus med Oracle-databaser er funktionerne TO_NUMBER (konvertering af en streng til et tal), TO_DATE (konvertering af en streng til en dato) og TRUNC (afkortning af datoen, f.eks. til time, dag, måned, år) blevet implementeret. Der er også blevet tilføjet support til associative arrays (INDEX BY) og syntaksen "( + )" til bestemmelse af ydre sammenføjninger (outer join).
- For at øge kompatibiliteten med MySQL er pluginet caching_sha2_password blevet tilføjet, som benytter SHA2-algoritmen til hashing i stedet for SHA1 og er kompatibelt med det samme plugin i MySQL 9.
- En ny datatype XMLTYPE til lagring af data i XML-format er blevet tilføjet.
- Muligheden for at bruge cursorer med parametriserede forespørgsler (prepared statement) er blevet implementeret.
- Udtrykket "SET PATH" er blevet tilføjet for at angive rækkefølgen af komponenter i lagringsskemaet, når der henvises til dem uden at angive skemanavnet.
- Understøttelse af operationen "IS JSON" til checking af typen af JSON-udtryk, som er defineret i standarden SQL:2023, er blevet implementeret.
- I udtrykket «PARTITION BY KEY» er der implementeret support for hash-algoritmerne MYSQL51, MYSQL55, BASE31, CRC32C, XXH32 og XXH3.
- I Aria-lagringsmotoren er der implementeret en segmenteret nøglecache, hvor nøgler opdeles i grupper, der opbevares i separate cache-segmenter. Den nye cache har øget ydeevnen for parallel udførelse af forespørgsler fra forskellige brugere. Antallet af segmenter angives med variablen aria_pagecache_segments, som kan tage værdier fra 1 (standard) til 128.
- Muligheden for at bruge funktionsbaserede indekser (functional index) til at forbedre ydeevnen af GROUP/ORDER BY-operationer er blevet tilføjet.
- Der er implementeret support for udtrykket «CREATE GLOBAL TEMPORARY TABLE» til oprettelse af globale midlertidige tabeller. Sådanne midlertidige tabeller slettes, når sessionen afsluttes, og er synlige for alle brugere, men indeholder data, der er individuelle for hver bruger.
- Tilføjet support for SSL-nøgler, der er beskyttet med adgangskode. Adgangskoden til at låse SSL-certifikater op kan angives via variablen ssl_passphrase eller manuelt ved opstart. server.
- Udtrykket "SET SESSION AUTHORIZATION" er tilføjet for at udføre handlinger som en anden bruger, når de relevante privilegier er tildelt (udtrykket kan betragtes som et analogt "sudo" for databasesystemet).
- Plugin'et file_key_management.so har fået tilføjet support for SHA-2 hashes.
- Der er tilføjet support for svage cursor variabler (weak cursor variable) af den foruddefinerede type SYS_REFCURSOR, som muliggør at returnere en cursor fra lagrede procedurer (i OUT parameteren) eller fra funktioner (i RETURN udtrykket). For at begrænse det maksimale antal åbne cursorer samtidig er der tilføjet en systemvariabel "max_open_cursors."
- I datatypen TO_CHAR er der tilføjet support for FM-format (Fill Mode) for at udelukke overflødigt fyld. For eksempel vil forespørgslen
«SELECT CONCAT(‘/’, TO_CHAR(‘2020-01-06 10:11:12’, ‘FMDAY’), ‘/’);» returnere «/Monday/» i stedet for «/Monday /». - I værktøjet mariadb-check og udtrykket CHECK TABLE er der tilføjet support for tabeller fra SEQUENCE motoren.
- Optimereren er blevet forbedret med support for hint-optioner, der påvirker optimeringsplanens opbygning: 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 og [NO_]MERGE. Optionerne indarbejdes i forespørgslen i et format, der er kompatibelt med MySQL, for eksempel:
SELECT /*+ BKA(t1) NO_BKA(t2) */ * FROM t1 INNER JOIN t2 WHERE ...;
SELECT /*+ MAX_EXECUTION_TIME(1000) */ * FROM t1 INNER JOIN t2 WHERE ...; - Ydelsen for uordnede udtryk «LEFT JOIN» og ordnet scanning er forbedret ved brug af udtrykket «PARTITION BY RANGE».
- I resultaterne af optimeringens tracing er der sikret visning af definitioner
af tabeller og visninger. - Ved udførelse af sammenfletning af tabeller (JOIN) er der implementeret en optimering, der tager hensyn til unikke rækker i underforespørgsler med udtrykket 'GROUP BY' for mere præcist at forudsige antallet af resultatende rækker (out_rows) og korrekt anvende indekser.
- Skalerbarheden af MDL-låse (Metadata Lock) er forbedret.
- Der er tilføjet support for nye GIS-funktioner (Geographic Information System):
ST_Validate, MBRCoveredBy, ST_Simplif, ST_GeoHash, ST_LatFromGeoHash, ST_LongFromGeoHash, ST_PointFromGeoHash, ST_IsValid, ST_Collect. - Der er tilføjet support for triggere, der aktiveres for flere begivenheder. I CREATE TRIGGER-udtrykket kan man nu angive de gældende begivenheder ved hjælp af syntaksen „{ event [ OR … ] }“.
- Auditlog-pluginet har fået support til buffring af log skriveoperationer. Bufferens størrelse angives med variablen server_audit_file_buffer_size.
Der er implementeret logføring af netværksportsinformationer for indkommende forbindelser i revisionsloggen (tidligere blev kun værten vist). - I mariadb-værktøjet er der tilføjet en option „—script-dir“ til angivelse af en alternativ mappe til søgning efter scripts, der køres med SOURCE-kommandoen.
- Parallel replikation er nu tilladt ved asynkron replikation af data mellem to Galera-klynger.
- MariaDB-dump-værktøjet har fået muligheden for at angive masker (f.eks. 'database_*'), ved hjælp af indstillingen '-L' (—wildcards).
- Kravet om unikhed af udenlandske nøgleidentifikatorer (foreign key) i konteksten af hele databasen er fjernet (unikhed på tabelniveau er tilstrækkelig).
- Begrænsningerne for niveauet af indlejrede strukturer i funktioner til arbejde med JSON er blevet fjernet (JSON_DEPTH_LIMIT, som tidligere havde en værdi på 32, er blevet fjernet).
- Tabellen TRIGGERED_UPDATE_COLUMNS er blevet tilføjet i skemaet INFORMATION_SCHEMA (INFORMATION_SCHEMA.TRIGGERED_UPDATE_COLUMNS), der viser de kolonner, der ændres ved aktivering af en trigger.
- I tabellen PARAMETERS i skemaet INFORMATION_SCHEMA er der implementeret en kolonne PARAMETER_DEFAULT, der indeholder standardværdier for parametre i gemte procedurer.
- Variablerne big_tables, large_page_size og storage_engine, der tidligere blev erklæret forældede, er fjernet.
Kilde: opennet.ru
