Een nieuwe LTS-tak van de MariaDB-database 12.3 is uitgebracht

De release van de databasesoftware MariaDB 12.3.2 is aangekondigd, gemarkeerd als de eerste stabiele release van de 12.3-serie. De 12.3-serie van MariaDB valt onder de releases met lange termijnondersteuning en zal worden ondersteund tot juni 2029. Tegelijkertijd is de release MariaDB 13.0.1 beschikbaar, die de status van release-kandidaat heeft.

Het MariaDB-project ontwikkelt een fork van MySQL, die backwards compatible is en zich onderscheidt door de integratie van extra opslagmotoren en uitgebreide mogelijkheden. De ontwikkeling van MariaDB wordt gecoördineerd door de onafhankelijke organisatie MariaDB Foundation, volgens een open en transparant ontwikkelingsproces dat niet afhankelijk is van specifieke leveranciers. MariaDB wordt in plaats van MySQL geleverd in veel Linux-distributies (RHEL, SUSE, Fedora, openSUSE, Slackware, OpenMandriva, ROSA, Arch Linux, Debian) en is geïmplementeerd in grote projecten zoals Wikipedia, Google Cloud SQL en Nimbuzz.

Onder de veranderingen in de MariaDB 12.3-serie in vergelijking met de vorige LTS-release MariaDB 11.8:

  • De implementatie van de binaire log (binlog) is volledig herzien, met de belangrijkste componenten die zijn overgebracht naar de InnoDB-engine. Deze verschuiving heeft het mogelijk gemaakt om verouderde synchronisatielogica te verwijderen, de replicatie te versnellen en de prestaties van gegevensschrijfacties te verbeteren. Bij testen van de nieuwe implementatie op zwaarbelaste systemen is tot 4 keer betere prestaties waargenomen bij een groot aantal schrijfacties. Voor activatie is de instelling "binlog_storage_engine=innodb" voorgesteld.
  • De snelheid van vectorzoekopdrachten met het TYPE VECTOR, toegepast in machinaal leren, is met 30-50% verhoogd. Deze versnelling wordt bereikt door optimalisatie van berekeningen bij het zoeken naar overeenkomsten tussen vectoren in multidimensionale ruimtes en de implementatie van een nieuwe extrapolatiemethode op basis van geneste vectorrepresentaties (matryoshka embedding).
  • Mogelijkheden zijn toegevoegd om de migratie van Oracle-databases te vereenvoudigen. In compatibiliteitsmodus met Oracle-databases zijn de functies TO_NUMBER (omzetten van tekst naar getal), TO_DATE (omzetten van tekst naar datum) en TRUNC (afkorten van een datum, bijvoorbeeld tot het uur, de dag, de maand, het jaar) geïmplementeerd, evenals ondersteuning voor associatieve arrays (INDEX BY) en de syntaxis "( + )" voor het definiëren van outer joins.
  • Om de compatibiliteit met MySQL te verbeteren, is de authenticatieplugin caching_sha2_password toegevoegd, die de SHA2-hashingsalgoritme gebruikt in plaats van SHA1 en compatibel is met de gelijknamige plugin uit MySQL 9.
  • Er is een nieuw type XMLTYPE toegevoegd voor het opslaan van gegevens in XML-formaat.
  • De mogelijkheid om cursors te gebruiken met parameter-gebaseerde query's (prepared statements) is geïmplementeerd.
  • De expressie "SET PATH" is toegevoegd om de volgorde van zoeken naar opslagcomponenten op te geven wanneer deze zonder schemanaam worden aangesproken.
  • Ondersteuning voor de operatie "IS JSON" is geïmplementeerd om het type van een JSON-expressie te controleren, zoals vastgesteld in de standaard SQL:2023.
  • In de uitdrukking «PARTITION BY KEY» is ondersteuning geïmplementeerd voor de hashing-algoritmen MYSQL51, MYSQL55, BASE31, CRC32C, XXH32 en XXH3.
  • In de Aria-opslagengine is een segmentcache voor sleutels geïmplementeerd, waarin sleutels in groepen worden verdeeld die in afzonderlijke cache-segmenten worden opgeslagen. Deze nieuwe cache heeft de prestaties van gelijktijdige query-uitvoering door verschillende gebruikers verbeterd. Het aantal segmenten wordt ingesteld via de variabele aria_pagecache_segments, die waarden van 1 (standaard) tot 128 kan aannemen.
  • De mogelijkheid om functionele indexen te gebruiken voor het verbeteren van de prestaties van GROUP/ORDER BY-operaties is toegevoegd.
  • Ondersteuning is geïmplementeerd voor de uitdrukking «CREATE GLOBAL TEMPORARY TABLE» voor het maken van globale tijdelijke tabellen. Deze tijdelijke tabellen worden verwijderd na het beëindigen van de sessie en zijn zichtbaar voor alle gebruikers, maar bevatten gegevens die specifiek zijn voor elke gebruiker.
  • Ondersteuning toegevoegd voor SSL-sleutels, beschermd met een wachtwoord. Het wachtwoord voor het ontsleutelen van SSL-certificaten kan worden ingesteld via de variabele ssl_passphrase of handmatig bij het opstarten. de server.
  • De expressie "SET SESSION AUTHORIZATION" is toegevoegd voor het uitvoeren van acties als een andere gebruiker bij het toekennen van de juiste privileges (de expressie kan worden beschouwd als een soort "sudo" voor databases).
  • In de plugin file_key_management.so is ondersteuning voor SHA-2 hashes toegevoegd.
  • Ondersteuning voor zwakke cursorvariabelen (weak cursor variable) van het vooraf gedefinieerde type SYS_REFCURSOR is toegevoegd, waardoor het mogelijk is om een cursor terug te geven uit opgeslagen procedures (in de OUT parameter) of uit functies (in de RETURN expressie). Om het maximale aantal tegelijkertijd open cursors te beperken, is de systeemvariabele "max_open_cursors" toegevoegd.
  • In het type TO_CHAR is ondersteuning toegevoegd voor het FM-formaat (Fill Mode) om extra opvulling uit te sluiten. Bijvoorbeeld, de query
    «SELECT CONCAT(‘\’, TO_CHAR(‘2020-01-06 10:11:12’, ‘FMDAY’), ‘\’);» zal «\Monday\» retourneren in plaats van «\Monday \».
  • In de utility mariadb-check en de expressie CHECK TABLE is ondersteuning voor tabellen van de SEQUENCE engine toegevoegd.
  • De optimizer heeft ondersteuning gekregen voor hints die de optimalisatieplannen beïnvloeden: 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 en [NO_]MERGE. De opties worden in de query ingevoegd in een MySQL-compatibel formaat, bijvoorbeeld:

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

  • De prestaties van ongeordende expressies «LEFT JOIN» en geordende scans zijn verbeterd bij het gebruik van de uitdrukking «PARTITION BY RANGE».
  • In de trace-resultaten van de optimizer is het tonen van definities
    van tabellen en weergaven verzekerd.
  • Bij het uitvoeren van tabelmergingsoperaties (JOIN) is een optimalisatie geïmplementeerd die de uniciteit van rijen in subqueries met de uitdrukking «GROUP BY» in overweging neemt voor een nauwkeurigere voorspelling van het aantal resulterende rijen (out_rows) en een correcte toepassing van indexen.
  • De schaalbaarheid van MDL (Metadata Lock) sloten is verbeterd.
  • Ondersteuning is toegevoegd voor nieuwe GIS-functies (Geographic Information System):
    ST_Validate, MBRCoveredBy, ST_Simplif, ST_GeoHash, ST_LatFromGeoHash, ST_LongFromGeoHash, ST_PointFromGeoHash, ST_IsValid, ST_Collect.
  • Ondersteuning voor triggers die voor meerdere gebeurtenissen worden geactiveerd is toegevoegd. In de expressie CREATE TRIGGER kunnen nu de toepasselijke gebeurtenissen worden opgesomd met behulp van de syntaxis "{ event [ OR … ] }".
  • De plug-in voor het bijhouden van auditlogs heeft ondersteuning gekregen voor het bufferen van logboekschrijfacties. De grootte van de buffer wordt ingesteld via de variabele server_audit_file_buffer_size.
    Registratie van netwerkpoorten voor inkomende verbindingen is geïmplementeerd in het auditlog (voorheen werd alleen de host weergegeven).
  • In de mariadb tool is de optie «—script-dir» toegevoegd om een alternatieve map voor het zoeken naar scripts die met de SOURCE-opdracht worden uitgevoerd op te geven.
  • Parallelle replicatie is toegestaan bij asynchrone replicatie van gegevens tussen twee Galera-clusters.
  • De utiliteit mariadb-dump heeft de mogelijkheid gekregen om maskers op te geven (bijvoorbeeld 'database_*'), met behulp van de optie '-L' (—wildcards).
  • De eis voor uniekheid van externe sleutel-IDs (foreign key) in de context van de hele DB is verwijderd (uniekheid op tabelniveau is voldoende).
  • Beperkingen op het niveau van geneste structuren in functies voor het werken met JSON zijn opgeheven (de limiet JSON_DEPTH_LIMIT, die eerder een waarde van 32 aan nam, is verwijderd).
  • De tabel TRIGGERED_UPDATE_COLUMNS is toegevoegd aan het schema INFORMATION_SCHEMA (INFORMATION_SCHEMA.TRIGGERED_UPDATE_COLUMNS), die de kolommen toont die worden gewijzigd wanneer een trigger wordt geactiveerd.
  • In de PARAMETERS-tabel in het INFORMATION_SCHEMA is de kolom PARAMETER_DEFAULT geïmplementeerd, die de standaardwaarden voor parameters van opgeslagen procedures bevat.
  • De variabelen big_tables, large_page_size en storage_engine zijn verwijderd, die eerder als verouderd werden beschouwd.

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster