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

60GB SSD 8Gb DDR4