Oracle hat eine neue Version des DBMS MySQL 9.1.0 veröffentlicht. Die Builds des MySQL Community Servers 9.1.0 sind für alle gängigen Linux-Distributionen, FreeBSD, macOS und Windows vorbereitet. Im Rahmen des im vergangenen Jahr eingeführten neuen Modells zur Veröffentlichung von Releases wurde MySQL 9.1 in die „Innovation“-Zweige eingestuft, zu denen auch die nächste bedeutende Version MySQL 9.2 gehören wird. Die Innovation-Zweige sind für diejenigen empfohlen, die frühzeitig Zugriff auf neue Funktionen wünschen, erscheinen alle 3 Monate und werden nur bis zur Veröffentlichung des nächsten wichtigen Releases unterstützt (z. B. nach der Veröffentlichung des Zweigs 9.1 wird die Unterstützung für den Zweig 9.0 eingestellt). Im Sommer nächsten Jahres ist die Veröffentlichung eines LTS-Releases geplant, das für Implementierungen empfohlen wird, die Vorhersehbarkeit und ein langanhaltendes, unverändertes Verhalten benötigen. Nach dem LTS-Zweig wird ein neuer Innovation-Zweig — MySQL 10.0 — gebildet.
Hauptänderungen in MySQL 9.1:
- In die Operation „CREATE VIEW“ wurde die Unterstützung des Ausdrucks „IF NOT EXISTS“ aufgenommen, die es ermöglicht, eine Ansicht nur zu erstellen, wenn eine Ansicht mit dem angegebenen Namen noch nicht existiert, und zu vermeiden, dass ein Fehler zurückgegeben wird, wenn die Ansicht bereits erstellt wurde.
- Der Trigger-Ladevorgang wurde bei Operationen, die nur Lesezugriffe betreffen, gestoppt. Zuvor wurden Trigger bei jedem Zugriff auf die Tabelle geladen, was zu hohem Speicherverbrauch und CPU-Last führte, wenn die Trigger nicht verwendet wurden (z. B. bei der Ausführung von SELECT-Anfragen). In MySQL 9.1 ist die Verarbeitung und der Ladevorgang von Triggern in zwei Phasen unterteilt: das Lesen von Metadaten über den Trigger und die Analyse + Ausführung des Triggers. Die Daten, die in der ersten Phase erhalten werden, werden einmal gespeichert und dann von verschiedenen Instanzen des Triggers gemeinsam genutzt. Die Analyse und Ausführung des Triggers erfolgt nur für Ausdrücke, die zu Datenänderungen führen. Darüber hinaus wurde der Übergang zur dynamischen Speicherzuweisung nach Bedarf vollzogen, um den Speicherverbrauch zu reduzieren, anstelle von statischer Pufferzuweisung zur Fehlerbehandlung in Triggern.
- Die Ausgabe der Operation „EXPLAIN“ wurde erweitert, um Informationen über die Nutzung des Mehrbereichslesens (multi-range) und die Anwendung der Semijoin-Strategie anzuzeigen, bei der bei JOIN-Operationen nur Zeilen aus einer Tabelle verarbeitet werden.
- Die atomare Ausführung der Operationen „CREATE DATABASE“ und „DROP DATABASE“ wurde sichergestellt, um vor Fehlern bei einem unerwarteten Abbruch oder beim Auftreten von Fehlern auf Dateisystemebene während der Ausführung dieser Operationen zu schützen. Zum Beispiel konnte bei einem unerwarteten Abbruch von „CREATE DATABASE“ zuvor eine unvollständige, nicht funktionierende Datenbankstruktur erstellt werden, deren Bereinigung manuelles Eingreifen erforderte.
- In den in JavaScript geschriebenen gespeicherten Prozeduren wird der Typ VECTOR unterstützt. Daten mit diesem Typ können nun in Eingabe- und Rückgabewerten übergeben werden.
- Es wurde die Möglichkeit hinzugefügt, sich beim Anschluss an das DBMS mittels des OpenID Connect-Protokolls zu authentifizieren.
- Es wurden 27 Sicherheitsanfälligkeiten behoben, wobei die schwerwiegendste (CVE-2024-5535) mit einem kritischen Gefährdungsgrad (9,1 von 10) bewertet wurde. Diese Sicherheitsanfälligkeit kann remote ohne Authentifizierung ausgenutzt werden. Das Problem wird durch das Lesen von Daten aus dem nicht zugewiesenen Speicherbereich in der OpenSSL-Bibliothek verursacht und führt zu einem unerwarteten Abbruch oder zu einer Speicherleckage in der Antwort nach der Verbindung mit dem Server durch unter falschen Protokollparametern.
Quelle: opennet.ru
