Wichtige Updates für MySQL 8.0.23 (neue Funktionen)

Wichtige Updates für MySQL 8.0.23 (neue Funktionen)

Autor: Guan Changlong ist DBA in der Delivery Services-Abteilung von Aikesheng. Er ist hauptsächlich für die tägliche Problembehandlung von MySQL und Redis verantwortlich und beteiligt sich an der Lehre und Forschung der Datenbankschulung des Unternehmens sowie am Betrieb der Open Source-Community.
Quelle: Originalbeitrag
* Produziert von der Aikesheng Open Source Community, Originalinhalte dürfen nicht ohne Genehmigung verwendet werden. Für den Nachdruck wenden Sie sich bitte an den Herausgeber und geben Sie die Quelle an.

Im vorherigen Artikel wurde ein sehr ausführliches Tutorial zur Installation von MySQL 8.0.23 vorgestellt. Wenn Sie interessiert sind, klicken Sie hier, um es anzuzeigen.

MySQL 8.0.23 wurde heute veröffentlicht. Die Veröffentlichungsfrequenz beträgt nun stabil alle drei Monate. Bei dieser Version handelt es sich um eine Wartungsversion. Neben der Behebung einiger Fehler werden in dieser Version auch einige neue Funktionen hinzugefügt.

1. Unsichtbare Spalten

Spalten können als unsichtbar definiert werden, zum Beispiel:

# Beim Erstellen einer Tabelle können Sie diese unsichtbar machen (ALTER TABLE unterstützt dies auch)
mysql> TABELLE ERSTELLEN t1 (Spalte 1 INT, Spalte 2 INT UNSICHTBAR);
mysql> INSERT INTO t1 (col1, col2) VALUES (1, 2), (3, 4);

# SQL-Anweisung verwendet die unsichtbare Spalte, indem sie explizit darauf verweist mysql> SELECT * FROM t1;
+------+
| Spalte1 |
+------+
| 1 |
| 3 |
+------+

# Wenn auf eine unsichtbare Spalte nicht verwiesen wird, erscheint sie nicht im Ergebnis mysql> SELECT col1, col2 FROM t1;
+------+------+
| Spalte1 | Spalte2 |
+------+------+
| 1 | 2 |
| 3 | 4 |
+------+------+

https://dev.mysql.com/doc/refman/8.0/en/invisible-columns.html

2. Abfrageattribute

Ermöglicht einer Anwendung, für ihre Abfragen Metadaten pro Abfrage festzulegen.

mysql> Abfrageattribute n1 v1 n2 v2;
mysql> AUSWÄHLEN
     mysql_query_attribute_string('n1') AS 'attr 1',
     mysql_query_attribute_string('n2') AS 'attr 2',
     mysql_query_attribute_string('n3') AS 'Attr 3';
+--------+--------+--------+
| Attribut 1 | Attribut 2 | Attribut 3 |
+--------+--------+--------+
| v1 | v2 | NULL |
+--------+--------+--------+

https://dev.mysql.com/doc/refman/8.0/en/query-attribute-udfs.html#udf_mysql-query-attribute-string

3. Sicherheit

Doublewrite-Dateiseitenverschlüsselung

InnoDB verschlüsselt automatisch Doublewrite-Dateiseiten, die zu verschlüsselten Tablespaces gehören. Es ist keine Aktion erforderlich. Doublewrite-Dateiseiten werden mit dem Verschlüsselungsschlüssel des zugehörigen Tablespace verschlüsselt. Die verschlüsselten Seiten, auf denen Daten im selben Tablespace geschrieben werden, werden auch in die Doublewrite-Datei geschrieben. Doublewrite-Dateiseiten, die zu unverschlüsselten Tablespaces gehören, bleiben unverschlüsselt. Während der Wiederherstellung werden verschlüsselte Doublewrite-Dateiseiten entschlüsselt und auf Beschädigungen überprüft.

https://dev.mysql.com/doc/refman/8.0/en/innodb-data-encryption.html

Verbessern Sie die Kontosicherheit

Um die Zuordnung von TCP-Verbindungskonten deterministischer zu gestalten, wird der Hostnamenteil des Zuordnungskontos in der folgenden Reihenfolge geprüft, bevor das durch den Hostnamen angegebene Konto zugeordnet wird: Verwenden der Host-IP-Adresse zum Angeben des Kontos.

# Geben Sie das Konto mit der IP-Adresse anmysql> CREATE USER 'user_name'@'127.0.0.1';
mysql> CREATE USER 'Benutzername'@'198.51.100.44';

# Konto als IP-Adresse mit CIDR-Notation angegebenmysql> CREATE USER 'user_name'@'192.0.2.21/8';
mysql> CREATE USER 'Benutzername'@'198.51.100.44/16';

# Verwenden Sie ein Konto, das als IP-Adresse im Subnetzmaskenformat angegeben ist mysql> CREATE USER 'user_name'@'192.0.2.0/255.255.255.0';
mysql> CREATE USER 'Benutzername'@'198.51.0.0/255.255.0.0';

https://dev.mysql.com/doc/refman/8.0/en/connection-access.html

Präzisere FLUSH-Berechtigungen

Ein Benutzer mit der Berechtigung RELOAD kann verschiedene Vorgänge ausführen. Damit Datenbankadministratoren in manchen Fällen auf die Gewährung von RELOAD verzichten können und die Benutzerberechtigungen näher an den zulässigen Vorgängen liegen, wurde eine feinere Berechtigungskontrolle für FLUSH-Vorgänge eingeführt, sodass Kunden die Anweisungen FLUSH OPTIMIZER_COSTS, FLUSH STATUS, FLUSH USER_RESOURCES und FLUSH TABLES ohne die Berechtigung RELOAD ausführen können.

https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_reload

4. InnoDB

Optimierung von TRUNCATE / DROP

Wenn ein Benutzer einen TRUNCATE- oder DROP-Vorgang auf einem InnoDB-Tabellenbereich ausführt:

  • Löschen großer Tabellen auf Instanzen mit großen Pufferpools (> 32 GB)
  • Für Tablespaces mit adaptiven Hash-Indizes, die auf eine große Anzahl von Seiten verweisen
  • TRUNCATE temporärer Tabellenbereich

Im obigen Fall markiert MySQL es nun als gelöscht und gibt dann alle zum gelöschten Tablespace gehörenden Seiten verzögert aus dem Pufferpool frei oder verwendet sie erneut, während es die Seiten freigibt.

Tablespace-Attribut AUTOEXTEND_SIZE hinzugefügt

Die CREATE / ALTER TABLESPACE-Klausel für die reguläre InnoDB-Tabelle und die CREATE / ALTER TABLE-Klausel für den unabhängigen Tablespace verfügen über ein neues Auto-Extend-Attribut. Die ursprüngliche Größe des Tablespace-Wachstums ist in InnoDB intern auf 1 MB [Standard] (Seitengröße * Anzahl der Seiten in einem Bereich) fest codiert. Nach der Festlegung kann der Tabellenbereich auf eine vom Benutzer bestimmte Größe anwachsen.

# Geben Sie die Größe des Erweiterungsbereichs beim Erstellen oder Ändern einer Tabelle an mysql> CREATE TABLE t1 (c1 INT) AUTOEXTEND_SIZE = 4M;
mysql> ALTER TABLE t1 AUTOEXTEND_SIZE = 4M;

# Abfrage des Attributwertsmysql> SELECT NAME, AUTOEXTEND_SIZE FROM INFORMATION_SCHEMA.INNODB_TABLESPACES 
    WO NAME WIE 'test/t1';
+---------+-----------------+
| NAME | AUTOEXTEND_SIZE |
+---------+-----------------+
| test/t1 | 4194304 |
+---------+-----------------+

https://dev.mysql.com/doc/refman/8.0/en/innodb-tablespace-autoextend-size.html

Variable temptable_max_mmap hinzugefügt

Die neue Variable definiert die maximale Speichermenge, die die TempTable-Speicher-Engine aus speicherabgebildeten Dateien zuweisen darf, bevor sie beginnt, interne temporäre Tabellendaten in internen temporären Tabellen der InnoDB-Festplatte zu speichern. Die Einstellung temptable_max_mmap = 0 deaktiviert Zuweisungen aus speicherzugeordneten Dateien.

https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_temptable_max_mmap

5. Kopieren

Begriffssubstitution

Die Anweisung CHANGE MASTER TO ist veraltet. Verwenden Sie stattdessen den Alias ​​CHANGE REPLICATION SOURCE TO. Die Parameter der Anweisung haben außerdem Aliase, die den Begriff MASTER durch den Begriff SOURCE ersetzen. Beispielsweise können MASTER_HOST und MASTER_PORT jetzt als SOURCE_HOST und SOURCE_PORT eingegeben werden. Die Parameter MASTER_LOG_POS und MASTER_LOG_FILE der Anweisung START REPLICA | SLAVE haben jetzt die Aliase SOURCE_LOG_POS und SOURCE_LOG_FILE. Die Anweisungen funktionieren genauso wie zuvor, lediglich die für jede Anweisung verwendete Terminologie hat sich geändert. Wenn eine ältere Version verwendet wird, wird eine Veraltungswarnung ausgegeben.

Direkte Replikation von einem GTID-deaktivierten Master auf einen GTID-fähigen Slave

Neue Option für CHANGE REPLICATION SOURCE TO-Anweisung: ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS = [OFF,LOCAL,<UUID>]

Ermöglicht die Datenübertragung zwischen Nicht-GTID-Instanzen und GTID-Instanzen.

https://dev.mysql.com/doc/refman/8.0/en/replication-gtids-assign-anon.html

Einbeziehung von MDL- und ACL-Sperren in die MTS-Infrastruktur zur Erkennung von Deadlocks

Integriert die Thread-Serialisierungsinfrastruktur, die erforderlich ist, um Multithread-REPLICA bereitzustellen, das mit der MDL- und ACL-Zugriffsserialisierungsinfrastruktur dieselbe Commit-Reihenfolge wie SOURCE beibehält. Die Motivation besteht darin, jede Client-Anweisung auf REPLICA ausführen zu können, während REPLICA den Änderungsstrom aktiv verarbeitet. Solche Anweisungen können zu Deadlocks führen, die erkannt und ggf. aufgehoben werden müssen, um die Ausführung fortsetzen zu können.

Gruppenreplikation

Durch automatisches Verbindungsfailover für asynchrone Replikationskanäle wird sichergestellt, dass die Absenderliste auf der Empfängerseite mit Änderungen der Gruppenreplikationsmitgliedschaft synchronisiert wird.

6. X-Protokoll

Klassisches MySQL-Protokoll: Wenn die SQL-Abfrage Metadatensperren oder Ruhefunktionen verwendet, wird die Verbindung zum Server regelmäßig überprüft, um sicherzustellen, dass sie noch gültig ist. Wenn nicht, kann die Abfrage gestoppt werden, damit sie nicht weiterhin Ressourcen verbraucht. Bisher führte das X-Protokoll diese Prüfungen nicht durch und ging davon aus, dass die Verbindung noch gültig war. Es wurden jetzt Prüfungen für das X-Protokoll hinzugefügt.

Ab MySQL 8.0.23 benachrichtigt der Server alle Clients darüber, ob er die Verbindung gerade geschlossen hat oder ob er sie selbstständig geschlossen hat. Anhand dieser Informationen kann der Client entscheiden, ob es sinnvoll ist, die Verbindung wiederherzustellen und es noch einmal zu versuchen.

VII. Sonstiges

Optimieren Sie die Hashtabellenimplementierung für Hash-Joins. Das Ziel besteht darin, die Leistung zu steigern, weniger Speicher zu verwenden und die Speichersteuerung zu verbessern.

Einiger alter InnoDB-Code wurde durch Standard-C++11 ersetzt. Setzen Sie die Regeln und Semantik der Atomizität in Ihrem Code durch und sorgen Sie so für eine standardkonformere Nutzung.

8. Abschaffung und Entfernung

Relay_log_info_repository und Master_info_repository sind veraltet. Wenn ein Benutzer den Wert der Variablen „relay_log_info_repository“ oder „master_info_repository“ festlegt oder liest, wird eine Warnung zur Veralterung angezeigt. Zukünftig besteht die einzige Möglichkeit zum Speichern der Replikationskonfiguration und der Metadaten in transaktionalen Systemtabellen.

Die Anweisung FLUSH HOSTS wird durch TRUNCATE performance_schema.host_cache ersetzt und wird in einer zukünftigen MySQL-Version entfernt.

Artikelreferenz

Versionshinweise zu MySQL 8.0.23:

https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-23.html

Das MySQL 8.0.23 Maintenance Release ist allgemein verfügbar

https://mysqlserverteam.com/die-mysql-8-0-23-wartungsversion-ist-allgemein-verfügbar/

Dies ist das Ende dieses Artikels über die wichtigsten Updates von MySQL 8.0.23 (Interpretation neuer Funktionen). Weitere relevante MySQL 8.0.23-Updates finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den verwandten Artikeln weiter unten. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • mysql8.0.23 Linux (Centos7) Installation vollständiges und ausführliches Tutorial
  • Super ausführliches Tutorial zur Installation von MySQL 8.0.23
  • Schritte zur Installation von MySQL 8.0.23 unter Centos7 (Anfängerstufe)

<<:  Objektorientierte Programmierung mit XHTML und CSS

>>:  Beispiel für die Erzeugung eines Flügelschlags eines Schmetterlings mit reinem CSS3

Artikel empfehlen

React verwendet Routing, um zur Anmeldeoberfläche umzuleiten

Im vorherigen Artikel haben wir nach der Konfigur...

Codebeispiel für das Nutzungsszenario der Nginx-Domänenweiterleitung

Szenario 1: Aufgrund von Serverbeschränkungen ist...

Detaillierte Erläuterung der MySQL-Existes- und Not-Existes-Beispiele

Detaillierte Erläuterung der MySQL-Existes- und N...

Detaillierte Erklärung von react setState

Inhaltsverzeichnis Ist setState synchron oder asy...

Führen Sie die Initialisierungs-SQL aus, wenn Docker MySQL startet

1. Ziehen Sie das Mysql-Image docker pull mysql:5...

So stellen Sie über Navicat eine Remoteverbindung zu MySQL her

Wenn Sie Navicat direkt für die Verbindung über I...

Fehler mit ungerader Breite und Höhe in IE6

Wie in der Abbildung gezeigt: Aber bei der Anzeig...

Ein paar Dinge zu favicon.ico (am besten im Stammverzeichnis ablegen)

Öffnen Sie eine beliebige Webseite, zum Beispiel ...

So führen Sie das Springboot-Projekt im Docker aus

1. Klicken Sie unten in IDEA auf Terminal und geb...

So implementieren Sie eine automatische Remote-Sicherung von MongoDB unter Linux

Vorwort Nachdem ich den vorherigen Artikel über d...

Grundlegende Kenntnisse zum MySQL UNION-Operator

MySQL UNION-Operator Dieses Tutorial stellt die S...