Ich glaube, dass viele Menschen bereits mit der Geschichte von MySQL vertraut sind, daher werde ich hier nicht auf Details eingehen. Das Folgende ist eine Zusammenfassung der Meilensteinereignisse in seinem Entwicklungsprozess nur aus der Perspektive der Produkteigenschaften.
Empfohlen: „MySQL-Video-Tutorial“
1995 wurde MySQL 1.0 nur für den internen Gebrauch freigegeben.
1996 wurde MySQL 3.11.1 veröffentlicht, wobei die MySQL 2.x-Version übersprungen wurde.
1999 wurde MySQL AB gegründet. Im selben Jahr wurde MySQL 3.23 veröffentlicht, das die Berkeley DB-Speicher-Engine integrierte. Die Engine wurde von Sleepycat entwickelt und unterstützt Transaktionen. Im Zuge der Integration der Engine wurde der Quellcode geändert und damit der Grundstein für die spätere Pluggable-Storage-Engine-Architektur gelegt.
Im Jahr 2000 wurde ISAM auf die MyISAM-Speicher-Engine aktualisiert. Im selben Jahr wurde MySQL auf Basis der GPL-Vereinbarung Open Source.
Im Jahr 2002 wurde MySQL 4.0 veröffentlicht, das die später berühmte InnoDB-Speicher-Engine integriert. Diese von Innobase entwickelte Engine unterstützt Transaktionen und Sperren auf Zeilenebene und eignet sich für Szenarien mit hoher Parallelität wie OLTP.
Im Jahr 2005 wurde MySQL 5.0 veröffentlicht und begann mit der Unterstützung von Funktionen wie Cursorn, gespeicherten Prozeduren, Triggern, Ansichten und XA-Transaktionen. Im selben Jahr erwarb Oracle Innobase.
Im Jahr 2008 erwarb Sun MySQL AB für 1 Milliarde US-Dollar. Im selben Jahr wurde MySQL 5.1 veröffentlicht, das Funktionen wie Timer (Ereignisplaner), Partitionierung und zeilenbasierte Replikation unterstützte.
Im Jahr 2009 erwarb Oracle Sun Microsystems für 7,4 Milliarden US-Dollar.
Im Jahr 2010 wurde MySQL 5.5 veröffentlicht, das die folgenden wichtigen Funktionen und Updates enthält.
● InnoDB ersetzt MyISAM als Standardspeicher-Engine für MySQL.
● Durch die Multi-Core-Erweiterung kann die Multi-Core-CPU voll ausgenutzt werden.
● Zu den Leistungsverbesserungen von InnoDB gehören die Unterstützung einer schnellen Indexerstellung, Tabellenkomprimierung, Leistungsverbesserungen des E/A-Subsystems, die Trennung von PURGE-Vorgängen vom Hauptthread und die Aufteilung des Pufferpools in mehrere Instanzen.
● Halbsynchrone Replikation.
● Einführung des Zeichensatzes utf8mb4, der zum Speichern von Emoji-Ausdrücken verwendet werden kann.
● Einführung von Metadatensperren.
● Erweiterung der Partitionstabelle, zwei neue Partitionstypen: RANGE COLUMNS und LIST COLUMNS.
● MySQL Enterprise Edition führt Thread-Pool ein.
● Die Anzahl der IO-Lese- und Schreibthreads kann konfiguriert werden (innodb_read_io_threads, innodb_write_io_threads). Zuvor war die Nummer 1 und war nicht konfigurierbar.
● Einführung der Option innodb_io_capacity, um die Anzahl schmutziger Seitenaktualisierungen zu steuern.
Im Jahr 2013 wurde MySQL 5.6 veröffentlicht, das die folgenden wichtigen Funktionen und Updates enthält.
● GTID-Kopie.
● Verlustfreie Kopie.
● Verzögertes Kopieren.
● Parallele Replikation basierend auf Bibliotheksebene.
● mysqlbinlog kann Binlog aus der Ferne sichern.
● TIME, DATETIME und TIMESTAMP wurden umstrukturiert, um Sekundenbruchteile zu unterstützen. Auch der Platzbedarf von DATETIME wurde von bisher 8 Byte auf 5 Byte reduziert.
● Online-DDL. ALTER-Operationen blockieren DML nicht mehr.
● Transportable Tischplätze.
● Persistenz statistischer Informationen. Vermeiden Sie Unterschiede im Ausführungsplan derselben SQL zwischen Master und Slave oder nach einem Neustart der Datenbank.
● Volltextindex.
● InnoDB Memcached-Plugin.
● EXPLAIN kann verwendet werden, um die Ausführungspläne von DML-Operationen wie DELETE, INSERT, REPLACE, UPDATE usw. anzuzeigen. Zuvor wurden nur SELECT-Operationen unterstützt.
● Verbesserungen an Partitionstabellen, einschließlich der Erhöhung der maximalen Anzahl verfügbarer Partitionen auf 8192, der Unterstützung des Datenaustauschs zwischen partitionierten und nicht partitionierten Tabellen und der expliziten Angabe von Partitionen während des Betriebs.
● Die Gesamtgrößenbeschränkung von Redo Log wurde von bisher 4G auf 512G erweitert.
● Das Rückgängig-Protokoll kann in einem unabhängigen Tabellenbereich gespeichert werden. Da es sich um zufällige E/A handelt, eignet es sich besser für die Speicherung auf SSD. Die automatische Wiederherstellung von Speicherplatz wird jedoch immer noch nicht unterstützt.
● Kann den Status des Pufferpools sichern und laden, um die lange Aufwärmzeit zu vermeiden, die nach dem Neustart der Datenbank erforderlich ist.
● Interne Leistungsverbesserungen von InnoDB, einschließlich der Aufteilung des Kernel-Mutex, der Einführung unabhängiger Aktualisierungsthreads und der Einrichtung mehrerer Bereinigungsthreads.
● Die Leistung des Optimierers wurde verbessert, Funktionen wie ICP, MRR und BKA wurden eingeführt und Unterabfragen wurden optimiert.
Man kann sagen, dass MySQL 5.6 eine Meilensteinversion in der Geschichte von MySQL ist und auch die am weitesten verbreitete Version in der Produktion.
Im Jahr 2015 wurde MySQL 5.7 veröffentlicht, das die folgenden wichtigen Funktionen und Updates enthält.
● Gruppenreplikation
● InnoDB-Cluster
● Multi-Source-Replikation
● Erweiterte Halbsynchronisierung (AFTER_SYNC)
● Basierend auf WRITESET der parallelen Replikation.
● Aktivieren Sie die GTID-Replikation online.
● Kopierfilterregeln online festlegen.
● Ändern Sie die Größe des Pufferpools online.
● Bei gleicher Länge codierter Bytes erfordert die Änderung der Größe von VARCHAR nur die Änderung der Metadaten der Tabelle, ohne dass eine temporäre Tabelle erstellt werden muss.
● Sie können die Speicherzuweisungsstrategie der NUMA-Architektur festlegen (innodb_numa_interleave).
● Transparente Seitenkomprimierung.
● Automatisches Recycling des UNDO-Tabellenbereichs.
● Refactoring und Erweiterung des Abfrageoptimierers.
● Sie können den Ausführungsplan (EXPLAIN FOR CONNECTION) des aktuell ausgeführten SQL anzeigen.
● Einführung des Query Rewrite Plugins, das Abfragen auf der Serverseite umschreiben kann.
● EXPLAIN FORMAT=JSON zeigt Kosteninformationen an, sodass die Vor- und Nachteile der beiden Ausführungspläne intuitiv verglichen werden können.
● Einführung virtueller Spalten, ähnlich den Funktionsindizes in Oracle.
● Neue Instanzen erstellen standardmäßig keine Testdatenbank und anonymen Benutzer mehr.
● Der Befehl ALTER USER wird eingeführt, der zum Ändern von Benutzerkennwörtern, Kennwortablaufrichtlinien und zum Sperren von Benutzern verwendet werden kann.
● Das Feld, das Passwörter in der Tabelle mysql.user speichert, wird von „password“ in „authentication_string“ geändert.
● Tabellenbereichsverschlüsselung.
● Das Leistungsschema ist optimiert und die Speichernutzung ist reduziert.
● Das Leistungsschema führt viele Instrumentierungen ein. Zu den häufig verwendeten Instrumenten gehören die Instrumentierung der Speichernutzung, mit der die Speichernutzung von MySQL überprüft werden kann, die Instrumentierung zur Metadatensperre, mit der der Haltestatus von MDL überprüft werden kann, und die Instrumentierung des Stufenfortschritts, mit der der Fortschritt von überprüft werden kann Online-DDL.
● Das gleiche Triggerereignis (INSERT, DELETE, UPDATE) und die gleiche Triggerzeit (VOR, NACH) ermöglichen die Erstellung mehrerer Trigger. Bisher durfte nur ein Trigger erstellt werden.
● InnoDB unterstützt Partitionstabellen nativ. Zuvor wurde es über die ha_partition-Schnittstelle implementiert.
● Partitionierte Tabellen unterstützen die Funktion des transportierbaren Tabellenbereichs.
● Integrierte SYS-Datenbank, die die MySQL-Verwaltung vereinfacht und ungewöhnliche Probleme lokalisiert.
● Unterstützt nativ den JSON-Typ und führt viele JSON-Funktionen ein.
● Einführung eines neuen logischen Backup-Tools – mysqlpump, das Multithread-Backups auf Tabellenebene unterstützt.
● Einführung eines neuen Client-Tools – mysqlsh, das drei Sprachen unterstützt: JavaScript, Python und SQL. Zwei APIs: X DevAPI und AdminAPI. Erstere kann MySQL als Dokumentendatenbank betreiben und letztere wird zur Verwaltung des InnoDB-Clusters verwendet.
● mysql_install_db wird durch mysqld --initialize ersetzt, das zum Initialisieren der Instanz verwendet wird.
● Native Unterstützung für systemd.
● Die super_read_only-Option wird eingeführt.
● Sie können das Timeout für den SELECT-Vorgang festlegen (max_execution_time).
● Sie können die MySQL-Instanz über den Befehl SHUTDOWN herunterfahren.
● Die Option innodb_deadlock_detect wird eingeführt. In Szenarien mit hoher Parallelität kann diese Option verwendet werden, um die Deadlock-Erkennung zu deaktivieren.
● Es werden Optimiererhinweise eingeführt, die das Verhalten des Optimierers auf Anweisungsebene steuern können, z. B. ob ICP, MRR usw. aktiviert werden sollen. Davor gab es nur Indexhinweise.
● GIS-Verbesserungen, einschließlich der Verwendung von Boost.Geometry als Ersatz für den vorherigen GIS-Algorithmus, und InnoDB beginnt mit der Unterstützung räumlicher Indizes.
Im Jahr 2018 wurde MySQL 8.0 veröffentlicht, das die folgenden wichtigen Funktionen und Updates enthält.
● Einführung eines nativen InnoDB-basierten Datenwörterbuchs. Die Datenwörterbuchtabelle befindet sich in der MySQL-Bibliothek und ist für Benutzer unsichtbar. Wie andere Systemtabellen in der MySQL-Bibliothek wird sie in der Datei mysql.ibd im Datenverzeichnis gespeichert. Nicht mehr im MySQL-Verzeichnis abgelegt.
● Atomare DDL.
● INFORMATION_SCHEMA wurde rekonstruiert, wobei einige Tabellen basierend auf dem Datenwörterbuch in Ansichten rekonstruiert wurden. Davor handelte es sich um temporäre Tabellen.
● Die Abfrageleistung von PERFORMANCE_SCHEMA wurde verbessert und mehrere Indizes wurden integriert.
● Unsichtbarer Index.
● Absteigender Index.
● Histogramm.
● Gängige Tabellenausdrücke.
● Fensterfunktionen.
● Rolle.
● Ressourcengruppen können verwendet werden, um die Priorität von Threads und die Ressourcen, die sie verwenden können, zu steuern. Derzeit ist die CPU die einzige Ressource, die verwaltet werden kann.
● Die Option innodb_dedicated_server wird eingeführt, mit der innodb_buffer_pool_size, innodb_log_file_size und innodb_flush_method basierend auf dem Speicher des Servers dynamisch festgelegt werden können.
● Spalten schnell hinzufügen (ALGORITHMUS=INSTANT).
● Teilweise Aktualisierungen von JSON-Feldern (JSON Partial Updates).
● Persistenz automatisch inkrementierter Primärschlüssel.
● Persistente globale Variablen (SET PERSIST).
● Der Standardzeichensatz wird von latin1 in utf8mb4 geändert.
● UNDO-Tablespace ist standardmäßig aktiviert und unterstützt die Online-Anpassung der Menge (innodb_undo_tablespaces). In MySQL 5.7 ist es standardmäßig nicht aktiviert. Wenn Sie es aktivieren möchten, können Sie es nur während der Initialisierung festlegen.
● Backup-Sperre.
● Optimierung des Redo-Protokolls, einschließlich der Möglichkeit, dass mehrere Benutzer-Threads gleichzeitig in den Protokollpuffer schreiben können, und der dynamischen Änderung der Größe von innodb_log_buffer_size.
● Das Standard-Authentifizierungs-Plug-in wird von mysql_native_password in caching_sha2_password geändert.
● Die standardmäßige temporäre Speichertabelle wird von der MEMORY-Engine zur TempTable-Engine geändert. Im Vergleich zur ersteren unterstützt letztere die Speicherung variabler Länge von VARCHAR, VARBINARY und anderen Feldern variabler Länge. Ab MySQL 8.0.13 unterstützt die TempTable-Engine BLOB-Felder.
● Grant erstellt Benutzer nicht mehr implizit.
● Die Optionen NOWAIT und SKIP LOCKED werden in den Anweisungen SELECT ... FOR SHARE und SELECT ... FOR UPDATE eingeführt, um das Problem heißer Zeilen in E-Commerce-Szenarien zu lösen.
● Verbesserung des regulären Ausdrucks, 4 neue verwandte Funktionen wurden hinzugefügt, REGEXP_INSTR(), REGEXP_LIKE(), REGEXP_REPLACE(), REGEXP_SUBSTR().
● Der Abfrageoptimierer berücksichtigt bei der Formulierung des Ausführungsplans, ob sich die Daten im Pufferpool befinden. Bisher ging man davon aus, dass sich die Daten auf der Festplatte befanden.
● Die ha_partition-Schnittstelle wird aus der Codeschicht entfernt. Wenn Sie Partitionstabellen verwenden möchten, können Sie nur die InnoDB-Speicher-Engine verwenden.
● Es wurden detailliertere Berechtigungen eingeführt, um SUPER-Berechtigungen zu ersetzen. Bei der Erteilung von SUPER-Berechtigungen wird jetzt eine Warnung angezeigt.
● Die GROUP BY-Anweisung führt keine implizite Sortierung mehr durch.
● Die in MySQL 5.7 eingeführte Tabellenbereichsverschlüsselungsfunktion kann Redo Log und Undo Log verschlüsseln.
● Die Tabellen innodb_locks und innodb_lock_waits in information_schema wurden entfernt und durch die Tabellen data_locks und data_lock_waits in performance_schema ersetzt.
● Die Tabelle „performance_schema.variables_info“ wird eingeführt, um die Quelle und Änderung von Parametern aufzuzeichnen.
● Statistiken zu Client-Fehlermeldungen hinzugefügt (performance_schema.events_errors_summary_xxx).
● Die Antwortzeitverteilung von Abfragen kann gezählt werden (Aufruf sys.ps_statement_avg_latency_histogram()).
● Unterstützt die direkte Änderung von Spaltennamen (ALTER TABLE ... RENAME COLUMN old_name TO new_name).
● Das Benutzerkennwort kann die Wiederholungsrichtlinie (Wiederverwendungsrichtlinie) festlegen.
● Entfernen Sie die Funktion PASSWORD(). Das bedeutet, dass das Benutzerpasswort nicht über den Befehl „SET PASSWORD ... = PASSWORD('auth_string')“ geändert werden kann.
● Das Query-Cache-Modul wurde aus der Codeebene entfernt, sodass Variablen und Vorgänge im Zusammenhang mit dem Query-Cache nicht mehr unterstützt werden.
● BLOB-, TEXT-, GEOMETRY- und JSON-Felder ermöglichen das Festlegen von Standardwerten.
● Sie können die MySQL-Instanz über den RESTART-Befehl neu starten.
Es ist zu beachten, dass sich die oben genannte Veröffentlichung im Allgemeinen auf die GA-Version bezieht.
Schauen Sie sich abschließend die Veröffentlichungszeiten der neuesten Hauptversionen sowie der neuesten Nebenversion und der Veröffentlichung zum Zeitpunkt der Veröffentlichung dieses Buches an Zeit. .
https://en.wikipedia.org/wiki/MySQL#Release_history
Aus den Daten in der Tabelle,
1. Eine Hauptversion wird etwa alle 3 Jahre veröffentlicht.
2. Der Produktsupportzyklus beträgt in der Regel 8 Jahre.
3. Ich dachte, MySQL 5.5 sei veraltet, aber die offizielle Version wird immer noch aktualisiert.
Ursprüngliche Adresse: https://www.cnblogs.com/ivictor/p/9807284.html
Das obige ist der detaillierte Inhalt vonSchauen Sie sich die neuen Funktionen in MySQL 5.6, 5.7 und 8.0 an!. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!