Nach 10 Jahren seit der EinfĂŒhrung der Version 10.x wurde die Datenbank MariaDB 11.0.0 veröffentlicht, die mehrere bedeutende Verbesserungen und Ănderungen enthĂ€lt, die die KompatibilitĂ€t beeintrĂ€chtigen. Die Version hat derzeit den Status einer Alpha-Version und wird fĂŒr produktive Anwendungen nach der Stabilisierung bereit sein. Die nĂ€chste bedeutende Version, MariaDB 12, welche inkompatible Ănderungen enthĂ€lt, wird frĂŒhestens in 10 Jahren (im Jahr 2032) erwartet.
Das Projekt MariaDB entwickelt eine Abspaltung von MySQL, die möglichst die RĂŒckwĂ€rtskompatibilitĂ€t wahrt und sich durch die Integration zusĂ€tzlicher Speichermotoren und erweiterter Funktionen auszeichnet. Die Entwicklung von MariaDB wird von der unabhĂ€ngigen Organisation MariaDB Foundation in einem offenen und transparenten Entwicklungsprozess geleitet, der nicht von einzelnen Anbietern abhĂ€ngig ist. Die Datenbank MariaDB wird in vielen Linux-Distributionen (RHEL, SUSE, Fedora, openSUSE, Slackware, OpenMandriva, ROSA, Arch Linux, Debian) anstelle von MySQL ausgeliefert und ist in groĂen Projekten wie Wikipedia, Google Cloud SQL und Nimbuzz integriert.
Das wichtigste Upgrade in der Version MariaDB 11 ist der Wechsel des Abfrageoptimierers auf ein neues Kostenmodell (cost model), das eine genauere Vorhersage der Gewichtungen jedes AusfĂŒhrungsplans ermöglicht. Obwohl das neue Modell einige EngpĂ€sse bei der Leistung beseitigen kann, ist es möglicherweise nicht in allen Szenarien optimal und könnte einige Abfragen verlangsamen. Daher wird den Benutzern empfohlen, an Tests teilzunehmen und die Entwickler bei Problemen zu informieren.
Das zuvor verwendete Modell war gut geeignet, um den optimalen Index zu finden, hatte jedoch Probleme bei der Anwendung von Tabellen-Scan-Operationen, Index-Scans oder Bereichsabfragen. In dem neuen Modell wurde dieser Nachteil durch die Anpassung der Basisgewichtungen der Operationen im Speicher-Engine beseitigt. Bei der Bewertung der Leistung von Operationen, die von der Festplattengeschwindigkeit abhĂ€ngen, wie z.B. dem sequenziellen Scannen von DatensĂ€tzen, wird jetzt angenommen, dass die Daten auf einem SSD-Speicher liegen, der eine Lesegeschwindigkeit von 400 MB pro Sekunde gewĂ€hrleistet. ZusĂ€tzlich wurden die Gewichtungsparameter des Optimierers optimiert, was beispielsweise die Nutzung von Indizes fĂŒr "ORDER BY/GROUP BY"-Operationen in Unterabfragen ermöglichte und die Verarbeitung sehr kleiner Tabellen beschleunigte.
Es wird festgestellt, dass das neue Gewichtungsmodell die Auswahl eines optimaleren AusfĂŒhrungsplans fĂŒr Abfragen in folgenden Situationen ermöglichen wird:
- Bei der Verwendung von Abfragen, die mehr als 2 Tabellen abdecken.
- Bei Vorhandensein von Indizes mit einer groĂen Anzahl gleicher Werte.
- Bei der Verwendung von Bereichen, die mehr als 10 % der Tabelle abdecken.
- Bei komplexen Abfragen, in denen nicht alle verwendeten Spalten indiziert sind.
- Wenn Abfragen verwendet werden, die verschiedene Speicher-Engines ansprechen (zum Beispiel, wenn in einer Abfrage auf Tabellen in den Engines InnoDB und Memory zugegriffen wird).
- Bei der Verwendung von FORCE INDEX zur Verbesserung des Abfrageplans.
- Bei einer Verschlechterung des Abfrageplans bei Verwendung von "ANALYZE TABLE".
- Wenn die Abfrage eine groĂe Anzahl abgeleiteter Tabellen umfasst (eine groĂe Anzahl von verschachtelten SELECTs).
- Bei der Verwendung von ORDER BY oder GROUP BY-AusdrĂŒcken, die in die Indizes fallen.
Die wichtigsten InkompatibilitÀten im MariaDB 11 Branch:
- Die SUPER-Rechte erlauben nicht mehr die AusfĂŒhrung von Aktionen, fĂŒr die separate Privilegien gelten. Beispielsweise sind fĂŒr die Ănderung des Formats der binĂ€ren Logs die Berechtigungen BINLOG ADMIN erforderlich.
- Die Implementierung des Ănderungs-Puffers in InnoDB wurde entfernt.
- Die Parameter innodb_flush_method und innodb_file_per_table wurden als veraltet erklÀrt.
- Die UnterstĂŒtzung der Namen mysql* wurde als veraltet erklĂ€rt.
- Die Einstellung des Parameters explicit_defaults_for_timestamp auf 0 wurde als veraltet erklÀrt.
- Symbolische Links zur KompatibilitÀt mit MySQL wurden in ein separates Paket verschoben.
- Der Standardwert des Parameters innodb_undo_tablespaces wurde auf 3 geÀndert.
Quelle: opennet.ru
