Die Version der Datenbankmanagementsoftware MariaDB 12.3.2 wurde veröffentlicht und gilt als das erste stabile Release der 12.3-Serie. Die MariaDB 12.3-Serie ist als Version mit langfristigem Support eingestuft und wird bis Juni 2029 supportet. Gleichzeitig steht die Version MariaDB 13.0.1 zur VerfĂŒgung, die den Status einer Release-Kandidaten hat.
Das MariaDB-Projekt ist eine Abspaltung von MySQL, die die AbwĂ€rtskompatibilitĂ€t beibehĂ€lt und sich durch die Integration zusĂ€tzlicher Speicher-Engines und erweiterte Funktionen auszeichnet. Die Entwicklung von MariaDB wird von der unabhĂ€ngigen Organisation MariaDB Foundation geleitet, die einen offenen und transparenten Entwicklungsprozess pflegt und nicht von einzelnen Anbietern abhĂ€ngig ist. MariaDB wird in vielen Linux-Distributionen (RHEL, SUSE, Fedora, openSUSE, Slackware, OpenMandriva, ROSA, Arch Linux, Debian) anstelle von MySQL bereitgestellt und ist in groĂen Projekten wie Wikipedia, Google Cloud SQL und Nimbuzz implementiert.
Zu den Ănderungen in der MariaDB 12.3-Serie im Vergleich zur vorherigen LTS-Version MariaDB 11.8 gehören:
- Die Implementierung des binĂ€ren Protokolls (binlog) wurde vollstĂ€ndig neu gestaltet; die Hauptkomponenten dafĂŒr wurden in die InnoDB-Engine ĂŒbertragen. Diese Ăbertragung hat ermöglicht, die veraltete Synchronisierungslogik abzulegen, die Replikation zu beschleunigen und die Performance von datenschreibenden Operationen zu erhöhen. WĂ€hrend der Tests der neuen Implementierung in stark belasteten Systemen wurde ein Performancezuwachs von bis zu 4-fach bei einer hohen Anzahl von Schreiboperationen festgestellt. Zur Aktivierung ist die Einstellung âbinlog_storage_engine=innodbâ vorgeschlagen.
- Die Geschwindigkeit der vektorbasierten Suche wurde um 30-50% erhöht, indem der Typ VECTOR verwendet wird, der in maschinellen Lernsystemen eingesetzt wird. Die Beschleunigung wird durch die Optimierung von Berechnungen bei der Ăhnlichkeitssuche zwischen Vektoren in mehrdimensionalen RĂ€umen und die Implementierung einer neuen Extrapolationstechnik auf Basis von geschachtelten vektoriellen Darstellungen (matryoshka embedding) erreicht.
- Es wurden Funktionen zur Vereinfachung der Migration von Oracle-Datenbanken hinzugefĂŒgt. Im KompatibilitĂ€tsmodus mit Oracle-Datenbanken wurden die Funktionen TO_NUMBER (Umwandlung von Zeichenfolgen in Zahlen), TO_DATE (Umwandlung von Zeichenfolgen in Daten) und TRUNC (Trimmen von Daten, z.B. auf Stunde, Tag, Monat, Jahr) implementiert, ebenso wie die UnterstĂŒtzung von assoziativen Arrays (INDEX BY) und die Syntax «( + )» zur Definition von Ă€uĂeren Joins (outer joins).
- Um die KompatibilitĂ€t mit MySQL zu erhöhen, wurde das Authentifizierungs-Plugin caching_sha2_password hinzugefĂŒgt, das den SHA2-Algorithmus anstelle von SHA1 zur Hashierung verwendet und mit dem gleichnamigen Plugin aus MySQL 9 kompatibel ist.
- Ein neuer Typ XMLTYPE zum Speichern von Daten im XML-Format wurde hinzugefĂŒgt.
- Die Möglichkeit zur Verwendung von Cursors mit parametrierten Abfragen (prepared statement) wurde implementiert.
- Der Ausdruck âSET PATHâ wurde hinzugefĂŒgt, um die Reihenfolge der Suche nach Komponenten im Speicher-Schema festzulegen, wenn auf diese ohne Angabe des Schemanamens zugegriffen wird.
- Die UnterstĂŒtzung der Operation âIS JSONâ wurde implementiert, um den Typ eines JSON-Ausdrucks zu prĂŒfen, der 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-Speicher-Engine wurde ein segmentierter SchlĂŒssel-Cache implementiert, bei dem SchlĂŒssel in Gruppen aufgeteilt werden, die in separaten Cache-Segmenten gespeichert sind. Der neue Cache hat die Leistung der parallelen AusfĂŒhrung von Anfragen durch verschiedene Benutzer erhöht. Die Anzahl der Segmente wird ĂŒber die Variable aria_pagecache_segments festgelegt, die Werte von 1 (Standard) bis 128 annehmen kann.
- Die Möglichkeit zur Nutzung von funktionsbasierten Indizes wurde hinzugefĂŒgt, um die Leistung von GROUP/ORDER BY-Operationen zu verbessern.
- Die UnterstĂŒtzung des Ausdrucks âCREATE GLOBAL TEMPORARY TABLEâ wurde implementiert, um globale temporĂ€re Tabellen zu erstellen. Solche temporĂ€ren Tabellen werden nach der Beendigung der Sitzung gelöscht und sind fĂŒr alle Benutzer sichtbar, enthalten jedoch benutzerspezifische Daten.
- UnterstĂŒtzung fĂŒr SSL-SchlĂŒssel, die durch ein Passwort geschĂŒtzt sind. Das Passwort zum Entsperren der SSL-Zertifikate kann ĂŒber die Variable ssl_passphrase oder manuell beim Start festgelegt werden. Server.
- Der Befehl âSET SESSION AUTHORIZATIONâ wurde hinzugefĂŒgt, um Aktionen unter einem anderen Benutzer auszufĂŒhren, sofern die entsprechenden Berechtigungen gewĂ€hrt sind (dieser Befehl kann als Ăquivalent zu âsudoâ fĂŒr Datenbanken betrachtet werden).
- Im Plugin file_key_management.so wurde die UnterstĂŒtzung fĂŒr SHA-2-Hashing hinzugefĂŒgt.
- Die UnterstĂŒtzung schwacher Cursorvariablen (weak cursor variable) des vordefinierten Typs SYS_REFCURSOR wurde hinzugefĂŒgt, die es ermöglichen, einen Cursor aus gespeicherten Prozeduren (im OUT-Parameter) oder aus Funktionen (in der RETURN-Anweisung) zurĂŒckzugeben. Um die maximale Anzahl gleichzeitig geöffneter Cursor zu begrenzen, wurde die systemweite Variable âmax_open_cursorsâ hinzugefĂŒgt.
- Im Typ TO_CHAR wurde die UnterstĂŒtzung des Formats FM (Fill Mode) hinzugefĂŒgt, um zusĂ€tzliche AuffĂŒllungen auszuschlieĂen. Zum Beispiel wird die Abfrage
âSELECT CONCAT(â/â, TO_CHAR(â2020-01-06 10:11:12â, âFMDAYâ), â/â);â gibt â/Monday/â anstelle von â/Monday /â zurĂŒck. - Das Hilfsprogramm mariadb-check und der Ausdruck CHECK TABLE unterstĂŒtzen jetzt Tabellen aus dem SEQUENCE-Engine.
- Im Optimierer wurde die UnterstĂŒtzung fĂŒr Optionen (Hints) hinzugefĂŒgt, die das Erstellen von OptimierungsplĂ€nen 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 eingefĂŒgt, das mit MySQL kompatibel ist, zum Beispiel:
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 unordentlicher AusdrĂŒcke bei 'LEFT JOIN' und geordneter Scans mit der Verwendung des Ausdrucks 'PARTITION BY RANGE' wurde verbessert.
- Die Optimierungsergebnisse enthalten die Definitionen
von Tabellen und Ansichten. - Bei der DurchfĂŒhrung von JOIN-Operationen wurde eine Optimierung implementiert, die die Einzigartigkeit der Zeilen in Unterabfragen mit dem Ausdruck âGROUP BYâ berĂŒcksichtigt, um eine genauere Prognose der Anzahl der resultierenden Zeilen (out_rows) zu ermöglichen und die Anwendung von Indizes korrekt zu gestalten.
- Die Skalierbarkeit von MDL (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. - UnterstĂŒtzung fĂŒr Trigger hinzugefĂŒgt, die fĂŒr mehrere Ereignisse ausgelöst werden. Im Ausdruck CREATE TRIGGER können jetzt die relevanten Ereignisse unter Verwendung der Syntax â{ event [ OR ⊠] }â aufgelistet werden.
- Im Audit-Logging-Plugin wurde die UnterstĂŒtzung fĂŒr das Puffern von LogeintrĂ€gen hinzugefĂŒgt. Die GröĂe des Puffers wird ĂŒber die Variable server_audit_file_buffer_size festgelegt.
Im Audit-Log wird nun auch die Information ĂŒber Netzwerkports fĂŒr eingehende Verbindungen aufgezeichnet (zuvor wurde nur der Host angezeigt). - Das Tool mariadb hat die Option ââscript-dirâ hinzugefĂŒgt, um ein alternatives Verzeichnis fĂŒr die Suche nach Skripten festzulegen, die durch den Befehl SOURCE ausgefĂŒhrt werden.
- Die Nutzung von paralleler Replikation bei der asynchronen Replikation von Daten zwischen zwei Galera-Clustern wurde erlaubt.
- Das Tool mariadb-dump hat die Möglichkeit hinzugefĂŒgt, Masken (z.B. "database_*") ĂŒber die Option "-L" (âwildcards) anzugeben.
- Die Anforderung nach Einzigartigkeit von Identifikatoren fĂŒr FremdschlĂŒssel (foreign key) im Kontext der gesamten Datenbank wurde entfernt; es genĂŒgt die Einzigartigkeit auf Tabellenebene.
- Die EinschrĂ€nkungen bezĂŒglich der Verschachtelungstiefe von Strukturen in Funktionen zur Verarbeitung von JSON wurden aufgehoben (das Limit JSON_DEPTH_LIMIT, das zuvor den Wert 32 hatte, wurde entfernt).
- Eine Tabelle TRIGGERED_UPDATE_COLUMNS wurde im INFORMATION_SCHEMA (INFORMATION_SCHEMA.TRIGGERED_UPDATE_COLUMNS) hinzugefĂŒgt, die die Spalten anzeigt, die bei der Auslösung eines Triggers geĂ€ndert werden.
- In der Tabelle PARAMETERS im INFORMATION_SCHEMA wurde die Spalte PARAMETER_DEFAULT implementiert, die die Standardwerte der Parameter gespeicherter Prozeduren enthÀlt.
- Die Variablen big_tables, large_page_size und storage_engine, die zuvor als veraltet deklariert wurden, wurden entfernt.
Quelle: opennet.ru
