Maison > Article > base de données > Découvrez les nouvelles fonctionnalités de MySQL 5.6, 5.7 et 8.0 !
Je pense que beaucoup de gens connaissent déjà l’histoire de MySQL, je n’entrerai donc pas dans les détails ici. Ce qui suit est un résumé des événements marquants de son processus de développement uniquement du point de vue des caractéristiques du produit.
Recommandé : "Tutoriel vidéo MySQL"
En 1995, MySQL 1.0 a été publié pour un usage interne uniquement.
En 1996, MySQL 3.11.1 est sorti, ignorant la version MySQL 2.x.
En 1999, MySQL AB a été créée. La même année, MySQL 3.23 est sorti, qui intègre le moteur de stockage Berkeley DB. Le moteur a été développé par Sleepycat et prend en charge les transactions. Au cours du processus d'intégration du moteur, le code source a été modifié, jetant ainsi les bases de l'architecture ultérieure du moteur de stockage enfichable.
En 2000, ISAM a été mis à niveau vers le moteur de stockage MyISAM. La même année, MySQL était open source sur la base de l'accord GPL.
En 2002, MySQL 4.0 est sorti, intégrant le célèbre moteur de stockage InnoDB. Développé par Innobase, ce moteur prend en charge les transactions et les verrous au niveau des lignes, et convient aux scénarios à haute concurrence tels que OLTP.
En 2005, MySQL 5.0 a été publié et a commencé à prendre en charge des fonctionnalités telles que les curseurs, les procédures stockées, les déclencheurs, les vues et les transactions XA. La même année, Oracle acquiert Innobase.
En 2008, Sun a acquis MySQL AB pour 1 milliard de dollars. La même année, MySQL 5.1 est sorti, qui commence à prendre en charge des fonctionnalités telles que les minuteries (planificateur d'événements), le partitionnement et la réplication basée sur les lignes.
En 2009, Oracle a acquis Sun Microsystems pour 7,4 milliards de dollars.
En 2010, MySQL 5.5 a été publié, qui inclut les fonctionnalités et mises à jour importantes suivantes.
● InnoDB remplace MyISAM comme moteur de stockage par défaut pour MySQL.
● L'extension multicœur peut utiliser pleinement le processeur multicœur.
● Les améliorations des performances d'InnoDB incluent la prise en charge de la création rapide d'index, la compression des tables, l'amélioration des performances du sous-système d'E/S, la séparation des opérations PURGE du thread principal et la possibilité de diviser le pool de tampons en plusieurs instances.
● Réplication semi-synchrone.
● Introduction du jeu de caractères utf8mb4, qui peut être utilisé pour stocker des expressions emoji.
● Introduire des verrous de métadonnées.
● Amélioration de la table de partition, deux nouveaux types de partition : RANGE COLUMNS et LIST COLUMNS.
● MySQL Enterprise Edition introduit le pool de threads.
● Le nombre de threads de lecture et d'écriture IO peut être configuré (innodb_read_io_threads, innodb_write_io_threads). Avant cela, le nombre était 1 et n'était pas configurable.
● Introduction de l'option innodb_io_capacity pour contrôler le nombre d'actualisations de pages sales.
En 2013, MySQL 5.6 a été publié, qui inclut les fonctionnalités et mises à jour importantes suivantes.
● Copie GTID.
● Copie sans perte.
● Copie retardée.
● Réplication parallèle basée sur le niveau de la bibliothèque.
● mysqlbinlog peut sauvegarder à distance le binlog.
● TIME, DATETIME et TIMESTAMP ont été restructurés pour prendre en charge les fractions de seconde. L'espace requis pour DATETIME a également été réduit, passant des 8 octets précédents à 5 octets.
● DDL en ligne. Les opérations ALTER ne bloquent plus DML.
● Tablespaces transportables.
● Persistance des informations statistiques. Évitez les différences dans le plan d'exécution du même SQL entre le maître et l'esclave ou après le redémarrage de la base de données.
● Index du texte intégral.
● Plugin InnoDB Memcached.
● EXPLAIN peut être utilisé pour afficher les plans d'exécution des opérations DML telles que DELETE, INSERT, REPLACE, UPDATE, etc. Avant cela, seules les opérations SELECT étaient prises en charge.
● Améliorations apportées aux tables de partition, notamment en augmentant le nombre maximum de partitions disponibles à 8 192, en prenant en charge l'échange de données entre les tables partitionnées et non partitionnées et en spécifiant explicitement les partitions pendant le fonctionnement.
● La limite de taille totale de Redo Log a été étendue de la précédente 4G à 512G.
● Le journal d'annulation peut être enregistré dans un espace table indépendant. Comme il s'agit d'E/S aléatoires, il est plus approprié de le placer sur un SSD. Mais la récupération automatique de l'espace n'est toujours pas prise en charge.
● Peut vider et charger l'état du pool de tampons pour éviter le long temps de préchauffage requis après le redémarrage de la base de données.
● Améliorations des performances internes d'InnoDB, notamment le fractionnement du mutex du noyau, l'introduction de threads d'actualisation indépendants et la configuration de plusieurs threads de purge.
● Les performances de l'optimiseur ont été améliorées, des fonctionnalités telles que ICP, MRR et BKA ont été introduites et les sous-requêtes ont été optimisées.
On peut dire que MySQL 5.6 est une version marquante dans l'histoire de MySQL, et c'est également la version la plus utilisée en production.
En 2015, MySQL 5.7 a été publié, qui inclut les fonctionnalités et mises à jour importantes suivantes.
Quantity Réplication de groupe
● Cluster InnoDB
● Réplication multi-source
● Semi-synchronisation améliorée (AFTER_SYNC)
● Basé sur WRITESET de réplication parallèle.
● Activer la réplication GTID en ligne.
● Définissez des règles de filtrage des copies en ligne.
● Modifiez la taille du pool Buffer en ligne.
● Dans la même longueur d'octets codés, modifier la taille de VARCHAR nécessite uniquement de modifier les métadonnées de la table, sans créer de table temporaire.
● Vous pouvez définir la stratégie d'allocation de mémoire de l'architecture NUMA (innodb_numa_interleave).
● Compression de page transparente.
● Recyclage automatique de l'espace table UNDO.
● Refactoring et amélioration de l'optimiseur de requêtes.
● Vous pouvez afficher le plan d'exécution (EXPLAIN FOR CONNECTION) du SQL en cours d'exécution.
● Introduction du plugin Query Rewrite, qui peut réécrire les requêtes côté serveur.
● EXPLAIN FORMAT=JSON affichera les informations sur les coûts, afin que les avantages et les inconvénients des deux plans d'exécution puissent être comparés intuitivement.
● Introduction de colonnes virtuelles, similaires aux index de fonctions dans Oracle.
● Les nouvelles instances ne créent plus de base de données de test et d'utilisateurs anonymes par défaut.
● La commande ALTER USER est introduite, qui peut être utilisée pour modifier les mots de passe des utilisateurs, les politiques d'expiration des mots de passe et verrouiller les utilisateurs.
● Le champ qui stocke les mots de passe dans la table mysql.user passe de mot de passe à Authentic_string.
● Cryptage de l'espace table.
● Le schéma de performances est optimisé et son utilisation de la mémoire est réduite.
● Performance Schema introduit de nombreuses instrumentations. Les instruments couramment utilisés incluent l'instrumentation d'utilisation de la mémoire, qui peut être utilisée pour vérifier l'utilisation de la mémoire de MySQL, l'instrumentation de verrouillage des métadonnées, qui peut être utilisée pour vérifier l'état de conservation de MDL, et l'instrumentation Stage Progress, qui peut être utilisée pour vérifier la progression de DDL en ligne.
● Le même événement déclencheur (INSERT, DELETE, UPDATE) et le même instant de déclenchement (AVANT, APRÈS) permettent la création de plusieurs déclencheurs. Auparavant, un seul déclencheur pouvait être créé.
● InnoDB prend en charge nativement les tables de partition. Avant cela, il était implémenté via l'interface ha_partition.
● Les tables partitionnées prennent en charge la fonctionnalité d'espace table transportable.
● Base de données SYS intégrée, simplifiant la gestion MySQL et localisant les problèmes anormaux.
greep Supporte nativement le type JSON et introduit de nombreuses fonctions JSON.
● Introduction d'un nouvel outil de sauvegarde logique - mysqlpump, qui prend en charge la sauvegarde multithread au niveau des tables.
● Introduction d'un nouvel outil client - mysqlsh, qui prend en charge trois langages : JavaScript, Python et SQL. Deux API : X DevAPI et AdminAPI La première peut faire fonctionner MySQL comme base de données de documents, et la seconde est utilisée pour gérer InnoDB Cluster.
● mysql_install_db est remplacé par mysqld --initialize, qui est utilisé pour initialiser l'instance.
● Prise en charge native de systemd.
● L'option super_read_only est introduite.
● Vous pouvez définir le délai d'attente pour l'opération SELECT (max_execution_time).
● L'instance MySQL peut être arrêtée via la commande SHUTDOWN.
● L'option innodb_deadlock_detect est introduite. Dans les scénarios de concurrence élevée, cette option peut être utilisée pour désactiver la détection des blocages.
● Des indices d'optimisation sont introduits, qui peuvent contrôler le comportement de l'optimiseur au niveau de l'instruction, par exemple s'il faut activer ICP, MRR, etc. Avant cela, il n'y avait que des indices d'index.
● Améliorations du SIG, notamment l'utilisation de Boost.Geometry pour remplacer l'algorithme SIG précédent, et InnoDB commence à prendre en charge les index spatiaux.
En 2018, MySQL 8.0 a été publié, qui inclut les fonctionnalités et mises à jour importantes suivantes.
● Introduction d'un dictionnaire de données natif basé sur InnoDB. La table du dictionnaire de données se trouve dans la bibliothèque mysql et est invisible pour les utilisateurs. Comme les autres tables système de la bibliothèque mysql, elle est stockée dans le fichier mysql.ibd du répertoire de données. Il n'est plus placé dans le répertoire mysql.
● DDL atomique.
● INFORMATION_SCHEMA a été reconstruit, dans lequel certaines tables ont été reconstruites en vues basées sur un dictionnaire de données. Avant cela, il s'agissait de tables temporaires.
● Les performances des requêtes PERFORMANCE_SCHEMA ont été améliorées et plusieurs index ont été intégrés.
● Indice invisible.
● Index décroissant.
● Histogramme.
● Expressions de table courantes.
● Fonctions de fenêtre.
● Rôle.
● Les groupes de ressources peuvent être utilisés pour contrôler la priorité des threads et les ressources qu'ils peuvent utiliser. Actuellement, la seule ressource pouvant être gérée est le processeur.
● L'option innodb_dedicated_server est introduite, qui peut définir dynamiquement innodb_buffer_pool_size, innodb_log_file_size et innodb_flush_method en fonction de la mémoire du serveur.
● Ajoutez rapidement des colonnes (ALGORITHM=INSTANT).
● Mises à jour partielles des champs JSON (JSON Partial Updates).
● Persistance des clés primaires auto-incrémentées.
● Variables globales persistantes (SET PERSIST).
● Le jeu de caractères par défaut passe de latin1 à utf8mb4.
● L'espace table UNDO est activé par défaut et prend en charge l'ajustement en ligne de la quantité (innodb_undo_tablespaces). Dans MySQL 5.7, il n'est pas activé par défaut. Si vous souhaitez l'activer, vous ne pouvez le définir que lors de l'initialisation.
● Verrouillage de sauvegarde.
● Optimisation du Redo Log, notamment en permettant à plusieurs threads utilisateur d'écrire simultanément dans le tampon de journal et en modifiant dynamiquement la taille de innodb_log_buffer_size.
● Le plug-in d'authentification par défaut passe de mysql_native_password à caching_sha2_password.
● La table temporaire de mémoire par défaut passe du moteur MEMORY au moteur TempTable. Par rapport au premier, ce dernier prend en charge le stockage de longueur variable de VARCHAR, VARBINARY et d'autres champs de longueur variable. À partir de MySQL 8.0.13, le moteur TempTable prend en charge les champs BLOB.
● Grant ne crée plus d'utilisateurs implicitement.
● Les options NOWAIT et SKIP LOCKED sont introduites dans les instructions SELECT ... FOR SHARE et SELECT ... FOR UPDATE pour résoudre le problème des lignes chaudes dans les scénarios de commerce électronique.
● Amélioration des expressions régulières, 4 nouvelles fonctions associées ont été ajoutées, REGEXP_INSTR(), REGEXP_LIKE(), REGEXP_REPLACE(), REGEXP_SUBSTR().
● L'optimiseur de requêtes examinera si les données se trouvent dans le pool de tampons lors de la formulation du plan d'exécution. Avant cela, on supposait que les données se trouvaient sur le disque.
● L'interface ha_partition est supprimée de la couche de code. Si vous souhaitez utiliser des tables de partition, vous ne pouvez utiliser que le moteur de stockage InnoDB.
● Des autorisations plus précises ont été introduites pour remplacer les autorisations SUPER. L'octroi d'autorisations SUPER entraînera désormais un avertissement.
● L'instruction GROUP BY ne trie plus implicitement.
● La fonctionnalité de chiffrement de l'espace table introduite dans MySQL 5.7 peut chiffrer le journal redo et l'annulation du journal.
● Les tables innodb_locks et innodb_lock_waits dans information_schema ont été supprimées et remplacées par les tables data_locks et data_lock_waits dans performance_schema.
● Introduisez la table performance_schema.variables_info pour enregistrer la source et la modification des paramètres.
● Ajout de statistiques sur les messages d'erreur des clients (performance_schema.events_errors_summary_xxx).
● La distribution des temps de réponse des requêtes peut être comptée (appelez sys.ps_statement_avg_latency_histogram()).
● Prend en charge la modification directe des noms de colonnes (ALTER TABLE ... RENAME COLUMN old_name TO new_name).
● Le mot de passe de l'utilisateur peut définir la politique de nouvelle tentative (Politique de réutilisation).
● Supprimez la fonction PASSWORD(). Cela signifie que le mot de passe de l'utilisateur ne peut pas être modifié via la commande "SET PASSWORD ... = PASSWORD('auth_string')".
● Le module Query Cache a été supprimé de la couche de code, de sorte que les variables et opérations liées au Query Cache ne sont plus prises en charge.
● Les champs BLOB, TEXT, GEOMETRY et JSON permettent de définir des valeurs par défaut.
● Vous pouvez redémarrer l'instance MySQL via la commande RESTART.
Il est à noter que la version mentionnée ci-dessus fait généralement référence à la version GA.
Enfin, jetez un œil au tableau ci-dessous. Le tableau donne les horaires de sortie des versions majeures récentes, et à compter de la publication de ce livre, sa dernière version mineure et sa sortie. temps. .
https://en.wikipedia.org/wiki/MySQL#Release_history
À partir des données du tableau,
1. Une version majeure sortira environ tous les 3 ans.
2. Le cycle de support produit est généralement de 8 ans.
3. Je pensais que MySQL 5.5 était une antiquité, mais la version officielle est toujours en cours de mise à jour.
Adresse originale : https://www.cnblogs.com/ivictor/p/9807284.html
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!