mysql8.0 arrive
MySQL est un système de gestion de petites bases de données relationnelles open source développé par la société suédoise MySQL AB. Actuellement, MySQL est largement utilisé sur les sites Web de petite et moyenne taille sur Internet. En raison de sa petite taille, de sa vitesse rapide, de son faible coût total de possession et surtout des caractéristiques de l'open source, de nombreux sites Web de petite et moyenne taille choisissent MySQL comme base de données de site Web afin de réduire le coût total de possession d'un site Web.
L'équipe de développement MySQL a annoncé la sortie de la version MySQL 8.0.0 (DMR) le 12 ! Certaines personnes pourraient être surprises de savoir pourquoi MySQL est passé de 5.x à 8.0. En fait, la série MySQL 5.x existe depuis de nombreuses années. Elle était 5.1 avant l'acquisition par Oracle, et elle a été maintenue à 5.x depuis l'acquisition, comme 5.5, 5.6, 5.7 et ainsi de suite. En fait, si vous suivez le rythme de sortie original, vous pouvez considérer la version 5.6.x comme 6.x et la version 5.7.x comme 7.x. Par conséquent, nous venons de modifier la méthode de dénomination des versions.
Cependant, la version de développement MySQL 8.0.0 publiée cette fois présente encore de nombreux points forts.
Points forts de MySQL 8.0.0
Dictionnaire de données transactionnelles, complètement séparé du moteur de stockage MyISAM
Mettez vraiment le dictionnaire de données dans certaines tables d'InnoDB, et non plus FRM, Les fichiers TRG, PAR sont nécessaires ! Le schéma d'information apparaît désormais sous la forme d'une vue des tables du dictionnaire de données. En principe, le type de table de données MyISAM n'est pas du tout nécessaire et toutes les tables système peuvent être placées dans InnoDB.
Rôle SQL
Un rôle est un ensemble d'autorisations. Vous pouvez créer des rôles, accorder et supprimer des rôles à un utilisateur. Ceci est pratique pour la gestion des autorisations.
Le jeu de caractères utf8mb4 deviendra le jeu de caractères par défaut et prendra en charge Unicode 9
Le jeu de caractères par défaut passera de latin1 à utf8mb4, et le classement par défaut passera de latin1_swedish_ci à utf8mb4_800_ci_ai.
Index invisibles
Certains index peuvent être définis comme invisibles afin que l'optimiseur SQL ne les utilise pas, mais ils continueront à être mis à jour en arrière-plan. La visibilité peut être rétablie à tout moment lorsque cela est nécessaire.
Les opérations sur les bits peuvent être effectuées sur des données binaires
Non seulement les opérations sur les bits peuvent être effectuées sur BIGINT, mais à partir de la version 8.0, les opérations sur les bits sur [VAR]BINARY/[TINY|MEDIUM|LONG] Les BLOB sont également pris en charge.
Les opérations améliorées sur IPv6 et UUID
INET6_ATON() et INET6_NTOA() peuvent désormais effectuer des opérations sur bits, car INET6_ATON() renvoie désormais le type de données VARBINARY(16) (128 bits). Les opérations UUID ont été améliorées et trois nouvelles fonctions UUID_TO_BIN(), BIN_TO_UUID() et IS_UUID() ont été introduites. MySQL n'a pas de types de données IPv6 et UUID spéciaux, mais est stocké dans le type de données VARBINARY(16).
Variables globales persistantes
Vous pouvez utiliser SET PERSIST pour définir des variables globales persistantes, qui seront conservées même si le serveur est redémarré.
Améliorations du schéma de performance de la base de données de performances
Par exemple, plus de 100 index ont été ajoutés à la base de données de performances pour permettre une récupération plus rapide.
Refactoriser l'analyseur SQL
Améliorer continuellement et progressivement l'analyseur SQL. L'ancien analyseur présentait de sérieuses limitations en raison de sa complexité syntaxique et de son approche d'analyse descendante, ce qui le rendait difficile à maintenir et à étendre.
Modèle de coût
Les tampons InnoDB peuvent désormais estimer le nombre de tables et d'index se trouvant dans le cache mémoire principal, ce qui permet à l'optimiseur de savoir si les données peuvent être stockées en mémoire ou non lors du choix d'un méthode d’accès. Doit être stocké sur le disque.
Histogrammes
En utilisant des histogrammes, les utilisateurs ou les administrateurs de base de données peuvent établir des statistiques sur la distribution des données, qui peuvent être utilisées pour l'optimisation des requêtes afin de trouver des solutions de requête optimisées.
Amélioration des performances d'analyse
Amélioration des performances de la requête de plage InnoDB, ce qui peut améliorer les performances de la requête de table complète et de la requête de plage de 5 à 20 %.
Reconstruction de BLOB
La reconstruction de BLOB accélère les opérations de lecture/mise à jour des fragments et peut accélérer les opérations de données JSON.
Valeur d'auto-incrémentation persistante
InnoDB conservera la valeur maximale de la séquence d'auto-incrémentation dans le journal de rétablissement. Cette amélioration corrige également un très ancien bug numéro 199.
Tables temporaires
Supprimez la prise en charge des tables temporaires compressées et stockez les métadonnées des tables temporaires en mémoire.
Pour des améliorations et des détails plus importants, veuillez vous référer à l'annonce de la version MySQL 8.0.0 [1] et ici [2].
Télécharger
Actuellement, la version 8.0.0 est toujours une version de développement. Si vous souhaitez découvrir et tester les dernières fonctionnalités, vous pouvez télécharger les packages d'installation pour chaque plate-forme depuis dev.mysql.com[. 3]. Cependant, le progiciel MySQL devient de plus en plus volumineux et le package binaire sur la plate-forme Linux fait près de 1 Go. Si vous l'utilisez dans un environnement de production, veuillez continuer à utiliser la série 5.7 avant que la version 8.0 n'entre dans la version stable. La dernière version est la version 5.7.15 GA - qui ne fait que plus de 600 M.
Le dernier code source est sur GitHub. Les amis intéressés peuvent le consulter. Beaucoup d'entre eux sont des contributions de Chinois.
À partir de MySQL 8.0, la fonctionnalité d'index caché, également connue sous le nom d'index invisible, est prise en charge. Pour les index invisibles, l'optimiseur les ignorera simplement. Nous pouvons influencer le comportement de l'optimiseur grâce à cette fonctionnalité. De plus, cela peut également être considéré comme un tampon avant de supprimer un index. Après avoir temporairement défini l'index pour qu'il soit invisible, observez si l'application est normale ou s'il y a une erreur ou quelque chose du genre. Si tout va bien, supprimez-la enfin. .
Note de version correspondante de la version 8.0.0 :
Tests
# 创建一个普通的表t1,只带主键 mysql> create table t1 (a int primary key auto_increment, b int, c int, d int); Query OK, 0 rows affected (0.67 sec) # 增加一个索引 mysql> alter table t1 add key(b); Query OK, 0 rows affected (0.06 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> show indexes from t1\G *************************** 1. row *************************** Table: t1 Non_unique: 0 Key_name: PRIMARY Seq_in_index: 1 Column_name: a Collation: A Cardinality: 0 Sub_part: NULL Packed: NULL Null: Index_type: BTREE Comment: Index_comment: Visible: YES *************************** 2. row *************************** Table: t1 Non_unique: 1 Key_name: b Seq_in_index: 1 Column_name: b Collation: A Cardinality: 0 Sub_part: NULL Packed: NULL Null: YES Index_type: BTREE Comment: Index_comment: Visible: YES 2 rows in set (0.01 sec) 从show indexes的visible列显示了,这两个索引都是可见的。 # Load some data insert into t1 select NULL, rand()*100000, rand()*10000,rand()*10000; insert into t1 select NULL, rand()*100000, rand()*10000,rand()*10000 from t1; insert into t1 select NULL, rand()*100000, rand()*10000,rand()*10000 from t1; .... analyze table t1; mysql> explain select * from t1 where b > 5000 limit 10; +----+-------------+-------+------------+-------+---------------+------+---------+------+------+----------+-----------------------+ | id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra | +----+-------------+-------+------------+-------+---------------+------+---------+------+------+----------+-----------------------+ | 1 | SIMPLE | t1 | NULL | range | b | b | 5 | NULL | 1932 | 100.00| Using index condition | +----+-------------+-------+------------+-------+---------------+------+---------+------+------+----------+-----------------------+ 1 row in set, 1 warning (0.00 sec 可以看到索引b被使用到 # 修改索引b为不可见 mysql> alter table t1 alter index b invisible; Query OK, 0 rows affected (0.05 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> show indexes from t1\G *************************** 1. row *************************** Table: t1 Non_unique: 0 Key_name: PRIMARY Seq_in_index: 1 Column_name: a Collation: A Cardinality: 2048 Sub_part: NULL Packed: NULL Null: Index_type: BTREE Comment: Index_comment: Visible: YES *************************** 2. row *************************** Table: t1 Non_unique: 1 Key_name: b Seq_in_index: 1 Column_name: b Collation: A Cardinality: 2029 Sub_part: NULL Packed: NULL Null: YES Index_type: BTREE Comment: Index_comment: Visible: NO 2 rows in set (0.01 sec) mysql> explain select * from t1 where b > 5000 limit 10\G *************************** 1. row *************************** id: 1 select_type: SIMPLE table: t1 partitions: NULL type: ALL possible_keys: NULL key: NULL key_len: NULL ref: NULL rows: 2048 filtered: 33.33 Extra: Using where 1 row in set, 1 warning (0.00 sec) 当索引被修改为invisible后,优化器将不再选择这个索引 # 将索引重新修改为可见 mysql> alter table t1 alter index b visible; Query OK, 0 rows affected (0.05 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> explain select * from t1 where b > 5000 limit 10\G *************************** 1. row *************************** id: 1 select_type: SIMPLE table: t1 partitions: NULL type: range possible_keys: b key: b key_len: 5 ref: NULL rows: 1932 filtered: 100.00 Extra: Using index condition 1 row in set, 1 warning (0.00 sec) # 你也可以在创建索引的时候显式指定是否可见 mysql> alter table t1 add key(c) invisible; Query OK, 0 rows affected (0.12 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> show indexes from t1 where key_name = 'c'\G *************************** 1. row *************************** Table: t1 Non_unique: 1 Key_name: c Seq_in_index: 1 Column_name: c Collation: A Cardinality: 1848 Sub_part: NULL Packed: NULL Null: YES Index_type: BTREE Comment: Index_comment: Visible: NO 1 row in set (0.01 sec) # 或者在建表时指定关键字 mysql> create table t2 (a int primary key, b int, key(b) invisible); Query OK, 0 rows affected (0.67 sec) # 但primary key不可以设置为不可见 mysql> drop table t2; Query OK, 0 rows affected (0.03 sec) mysql> create table t2 (a int, b int, primary key(a) invisible); ERROR 3522 (HY000): A primary key index cannot be invisible

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Les capacités de recherche en texte intégral d'InNODB sont très puissantes, ce qui peut considérablement améliorer l'efficacité de la requête de la base de données et la capacité de traiter de grandes quantités de données de texte. 1) INNODB implémente la recherche de texte intégral via l'indexation inversée, prenant en charge les requêtes de recherche de base et avancées. 2) Utilisez la correspondance et contre les mots clés pour rechercher, prendre en charge le mode booléen et la recherche de phrases. 3) Les méthodes d'optimisation incluent l'utilisation de la technologie de segmentation des mots, la reconstruction périodique des index et l'ajustement de la taille du cache pour améliorer les performances et la précision.

L'article discute de l'utilisation de l'instruction ALTER TABLE de MySQL pour modifier les tables, notamment en ajoutant / abandon les colonnes, en renommant des tables / colonnes et en modifiant les types de données de colonne.

La numérisation complète de la table peut être plus rapide dans MySQL que l'utilisation d'index. Les cas spécifiques comprennent: 1) le volume de données est petit; 2) Lorsque la requête renvoie une grande quantité de données; 3) Lorsque la colonne d'index n'est pas très sélective; 4) Lorsque la requête complexe. En analysant les plans de requête, en optimisant les index, en évitant le sur-index et en maintenant régulièrement des tables, vous pouvez faire les meilleurs choix dans les applications pratiques.

Oui, MySQL peut être installé sur Windows 7, et bien que Microsoft ait cessé de prendre en charge Windows 7, MySQL est toujours compatible avec lui. Cependant, les points suivants doivent être notés lors du processus d'installation: téléchargez le programme d'installation MySQL pour Windows. Sélectionnez la version appropriée de MySQL (communauté ou entreprise). Sélectionnez le répertoire d'installation et le jeu de caractères appropriés pendant le processus d'installation. Définissez le mot de passe de l'utilisateur racine et gardez-le correctement. Connectez-vous à la base de données pour les tests. Notez les problèmes de compatibilité et de sécurité sur Windows 7, et il est recommandé de passer à un système d'exploitation pris en charge.

La différence entre l'index cluster et l'index non cluster est: 1. Index en cluster stocke les lignes de données dans la structure d'index, ce qui convient à la requête par clé et plage primaire. 2. L'index non clumpant stocke les valeurs de clé d'index et les pointeurs vers les lignes de données, et convient aux requêtes de colonne de clés non primaires.

L'article traite des outils de GUI MySQL populaires comme MySQL Workbench et PhpMyAdmin, en comparant leurs fonctionnalités et leur pertinence pour les débutants et les utilisateurs avancés. [159 caractères]

L'article traite des stratégies pour gérer de grands ensembles de données dans MySQL, y compris le partitionnement, la rupture, l'indexation et l'optimisation des requêtes.

L'article discute de la suppression des tables dans MySQL en utilisant l'instruction TABLE DROP, mettant l'accent sur les précautions et les risques. Il souligne que l'action est irréversible sans sauvegardes, détaillant les méthodes de récupération et les risques potentiels de l'environnement de production.
