Eine neue LTS-Version der MariaDB-Datenbank 12.3 wurde veröffentlicht.

Die Version 12.3.2 des DBMS MariaDB wurde vorgestellt, die als erste stabile Version des Zweigs 12.3 gewertet wird. Der Zweig MariaDB 12.3 zĂ€hlt zu den Versionen mit langfristiger UnterstĂŒtzung und wird bis Juni 2029 betreut. Gleichzeitig steht die Version 13.0.1 von MariaDB zur VerfĂŒgung, die den Status eines Release-Kandidaten hat.

Das Projekt MariaDB entwickelt einen Fork von MySQL, der die RĂŒckwĂ€rtskompatibilitĂ€t bewahrt und sich durch die Integration zusĂ€tzlicher Speicher-Engines und erweiterter Möglichkeiten auszeichnet. Die Entwicklung von MariaDB wird von der unabhĂ€ngigen Organisation MariaDB Foundation gemĂ€ĂŸ einem offenen und transparenten Entwicklungsprozess ĂŒberwacht, der nicht von einzelnen Herstellern abhĂ€ngig ist. MariaDB wird anstelle von MySQL in vielen Linux-Distributionen (RHEL, SUSE, Fedora, openSUSE, Slackware, OpenMandriva, ROSA, Arch Linux, Debian) bereitgestellt und ist in großen Projekten wie Wikipedia, Google Cloud SQL und Nimbuzz implementiert.

Zu den Änderungen im Zweig MariaDB 12.3 im Vergleich zur vorherigen LTS-Version MariaDB 11.8 gehören:

  • Die Implementierung des binĂ€ren Logs (binlog) wurde vollstĂ€ndig ĂŒberarbeitet, die Hauptkomponenten fĂŒr dessen FĂŒhrung wurden in die InnoDB-Engine verlagert. Diese Verlagerung ermöglichte die Beseitigung veralteter Synchronisationslogik, beschleunigte die Replikation und steigerte die Leistung bei Datenaufzeichnungsoperationen. Bei Tests der neuen Implementierung in stark belasteten Systemen wurde eine Leistungssteigerung bei einer hohen Anzahl von Schreiboperationen von bis zu 4-mal festgestellt. Zur Aktivierung wurde die Einstellung „binlog_storage_engine=innodb“ vorgeschlagen.
  • Die Geschwindigkeit der Vektor-Suche unter Verwendung des Typs VECTOR, der in Maschinenlernsystemen verwendet wird, wurde um 30-50 % erhöht. Diese Beschleunigung wird durch die Optimierung der Berechnungen bei der Ähnlichkeitssuche zwischen Vektoren in mehrdimensionalen RĂ€umen und der Implementierung einer neuen Extrapolationstechnik auf der Grundlage von geschachtelten VektorreprĂ€sentationen (matryoshka embedding) erreicht.
  • Die Möglichkeiten zur Vereinfachung der Migration von der Oracle-Datenbank wurden erweitert. Im KompatibilitĂ€tsmodus mit der Oracle-Datenbank wurden die Funktionen TO_NUMBER (Umwandlung von Zeichenfolgen in Zahlen), TO_DATE (Umwandlung von Zeichenfolgen in Daten) und TRUNC (Trunkierung von Daten, beispielsweise auf Stunde, Tag, Monat, Jahr) implementiert. Außerdem gibt es jetzt UnterstĂŒtzung fĂŒr assoziative Arrays (INDEX BY) und die Syntax „( + )“ zur Definition von Outer Joins.
  • Zur Verbesserung der KompatibilitĂ€t mit MySQL wurde das Authentifizierungs-Plugin caching_sha2_password hinzugefĂŒgt, das zur Hashing-Algorithmen SHA2 anstelle von SHA1 verwendet und mit dem gleichnamigen Plugin aus MySQL 9 kompatibel ist.
  • Ein neuer XMLTYPE-Datentyp wurde hinzugefĂŒgt, um Daten im XML-Format zu speichern.
  • Es wurde die Möglichkeit implementiert, Cursors mit parametrisierten Abfragen (prepared statement) zu verwenden.
  • Der Ausdruck „SET PATH“ wurde hinzugefĂŒgt, um die Reihenfolge der Suche nach Speicherkomponenten zu definieren, wenn auf diese ohne Angabe des Schema-Namens zugegriffen wird.
  • Die UnterstĂŒtzung fĂŒr den Befehl „IS JSON“ wurde umgesetzt, um den Typ des JSON-Ausdrucks zu ĂŒberprĂŒfen, wie er im SQL:2023 Standard definiert ist.
  • Im Ausdruck „PARTITION BY KEY“ wurde die UnterstĂŒtzung fĂŒr die Hash-Algorithmen MYSQL51, MYSQL55, BASE31, CRC32C, XXH32 und XXH3 implementiert.
  • Im Aria Speichermotor wurde ein segmentierter SchlĂŒsselcache implementiert, in dem SchlĂŒssel in Gruppen aufgeteilt und in separaten Cache-Segmenten gespeichert werden. Der neue Cache hat die Leistung der parallelen AusfĂŒhrung von Abfragen durch verschiedene Benutzer verbessert. Die Anzahl der Segmente wird ĂŒber die Variable aria_pagecache_segments festgelegt, die Werte von 1 (Standard) bis 128 annehmen kann.
  • Es wurde die Möglichkeit hinzugefĂŒgt, Funktionsbasierte Indizes (functional index) zu verwenden, um die Leistung von GROUP / ORDER BY-Operationen zu erhöhen.
  • Die UnterstĂŒtzung des Ausdrucks „CREATE GLOBAL TEMPORARY TABLE“ wurde implementiert, um globale temporĂ€re Tabellen zu erstellen. Solche temporĂ€ren Tabellen werden nach Beendigung der Sitzung entfernt und sind fĂŒr alle Benutzer sichtbar, enthalten jedoch Daten, die individuell fĂŒr jeden Benutzer sind.
  • UnterstĂŒtzung hinzugefĂŒgt fĂŒr SSL- SchlĂŒssel, die durch Passwörter geschĂŒtzt sind. Das Passwort zum Entsperren von SSL-Zertifikaten kann ĂŒber die Variable ssl_passphrase oder manuell beim Start angegeben werden. Server.
  • Der Ausdruck „SET SESSION AUTHORIZATION“ wurde hinzugefĂŒgt, um Aktionen unter einem anderen Benutzer durchzufĂŒhren, sofern die entsprechenden Berechtigungen erteilt wurden (der Ausdruck kann als Analogon zu „sudo“ fĂŒr DBMS betrachtet werden).
  • Im Plugin file_key_management.so wurde die UnterstĂŒtzung fĂŒr SHA-2-Hashes hinzugefĂŒgt.
  • Die UnterstĂŒtzung fĂŒr schwache Cursor-Variablen (weak cursor variable) des vordefinierten Typs SYS_REFCURSOR, die das RĂŒckgeben von Cursorn aus gespeicherten Prozeduren (im OUT-Parameter) oder Funktionen (im RETURN-Ausdruck) ermöglichen, wurde hinzugefĂŒgt. Um die maximale Anzahl gleichzeitig geöffneter Cursors zu begrenzen, wurde die Systemvariable „max_open_cursors“ hinzugefĂŒgt.
  • Im TO_CHAR-Typ wurde die UnterstĂŒtzung fĂŒr das Format FM (Fill Mode) zur Vermeidung von zusĂ€tzlicher AuffĂŒllung hinzugefĂŒgt. Zum Beispiel, die Abfrage
    „SELECT CONCAT(‘/’, TO_CHAR(‘2020-01-06 10:11:12’, ‘FMDAY’), ‘/’);“ wird „/Montag/“ anstelle von „/Montag /“ zurĂŒckgeben.
  • In das Dienstprogramm mariadb-check und den Ausdruck CHECK TABLE wurde die UnterstĂŒtzung fĂŒr Tabellen des SEQUENCE-Engines hinzugefĂŒgt.
  • Im Optimierer wurde die UnterstĂŒtzung fĂŒr Optionen (Hints) hinzugefĂŒgt, die die Erstellung des Optimierungsplans beeinflussen: 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 und [NO_]MERGE. Die Optionen werden im Format angegeben, das mit MySQL kompatibel ist, beispielsweise:

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

  • Die Leistung von ungeordneten AusdrĂŒcken „LEFT JOIN“ und geordnetem Scannen mit der Verwendung des Ausdrucks „PARTITION BY RANGE“ wurde erhöht.
  • In den Ergebnissen der Optimierertests wurde die Anzeige von Definitionen
    von Tabellen und Sichten gewÀhrleistet.
  • Bei der DurchfĂŒhrung von TabellenzusammenfĂŒhrungsoperationen (JOIN) wurde eine Optimierung implementiert, die die Einzigartigkeit der Zeilen in Unterabfragen mit dem Ausdruck „GROUP BY“ berĂŒcksichtigt, um die Anzahl der resultierenden Zeilen (out_rows) genauer vorherzusagen und die Indizes korrekt anzuwenden.
  • Die Skalierbarkeit der MDL-Sperren (Metadata Lock) wurde verbessert.
  • Die UnterstĂŒtzung neuer GIS-Funktionen (Geographic Information System) wurde hinzugefĂŒgt:
    ST_Validate, MBRCoveredBy, ST_Simplif, ST_GeoHash, ST_LatFromGeoHash, ST_LongFromGeoHash, ST_PointFromGeoHash, ST_IsValid, ST_Collect.
  • Die UnterstĂŒtzung fĂŒr Trigger, die fĂŒr mehrere Ereignisse ausgelöst werden, wurde hinzugefĂŒgt. Im CREATE TRIGGER-Ausdruck können nun die entsprechenden Ereignisse unter Verwendung der Syntax „{ event [ OR 
 ] }“ aufgezĂ€hlt werden.
  • Im Plugin fĂŒr das Audit-Logging wurde die UnterstĂŒtzung fĂŒr die Pufferung von Schreiboperationen im Log hinzugefĂŒgt. Die PuffergrĂ¶ĂŸe wird ĂŒber die Variable server_audit_file_buffer_size festgelegt.
    Im Audit-Log wird jetzt die Information ĂŒber Netzports fĂŒr eingehende Verbindungen gespeichert (zuvor wurde nur der Host protokolliert).
  • Im Dienstprogramm mariadb wurde die Option „—script-dir“ hinzugefĂŒgt, um ein alternatives Verzeichnis fĂŒr die Suche nach Skripten zu definieren, die mit dem Befehl SOURCE ausgefĂŒhrt werden.
  • Die Verwendung von Parallelreplikation bei asynchroner Datenreplikation zwischen zwei Galera-Clustern wurde erlaubt.
  • Im Dienstprogramm mariadb-dump wurde die Möglichkeit hinzugefĂŒgt, Masken (z. B. „database_*“) unter Verwendung der Option „-L“ (—wildcards) anzugeben.
  • Die Anforderung an die Eindeutigkeit der Identifikatoren von FremdschlĂŒsseln (foreign key) im gesamten Datenbankkontext wurde entfernt (Eindeutigkeit auf Tabellenebene ist ausreichend).
  • Die BeschrĂ€nkungen fĂŒr die Verschachtelungstiefe von Strukturen in Funktionen zur Arbeit mit JSON wurden aufgehoben (die Begrenzung JSON_DEPTH_LIMIT, die zuvor 32 war, wurde entfernt).
  • Eine Tabelle TRIGGERED_UPDATE_COLUMNS wurde im Schema INFORMATION_SCHEMA (INFORMATION_SCHEMA.TRIGGERED_UPDATE_COLUMNS) hinzugefĂŒgt, die die Spalten anzeigt, die bei der Auslösung eines Triggers geĂ€ndert werden.
  • Im Tabellen PARAMETERS im Schema INFORMATION_SCHEMA wurde eine Spalte PARAMETER_DEFAULT implementiert, die Standardwerte fĂŒr die Parameter gespeicherter Prozeduren enthĂ€lt.
  • Die Variablen big_tables, large_page_size und storage_engine, die zuvor als veraltet erklĂ€rt wurden, wurden entfernt.

Quelle: opennet.ru

ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server đŸ”„ ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server - ProHoster