MySQL

Un article de Wikipédia, l'encyclopédie libre
Aller à la navigation Aller à la recherche

MySQL [ ˌmaɪɛskjuːˈɛl ] [7] est l'un des systèmes de gestion de bases de données relationnelles les plus populaires au monde [8] . Il est disponible en tant que logiciel open source et en tant que version d'entreprise commerciale pour divers systèmes d'exploitation et constitue la base de nombreux sites Web dynamiques .

MySQL est développé par la société suédoise MySQL AB depuis 1994 . En février 2008, MySQL AB a été racheté par Sun Microsystems , qui à son tour a été racheté par Oracle en janvier 2010 .

Le nom MySQL est composé du prénom My , qui est le nom de la fille du co-fondateur de MySQL AB Michael Widenius , et de SQL . [9]

Domaines d'application et de distribution

Un domaine d'application privilégié pour MySQL est le stockage de données pour les services Web . MySQL est souvent utilisé en connexion avec le serveur web Apache ou Nginx et le langage de script PHP . On parle alors de pile LAMP (Linux / Apache / MySQL / PHP) ou de pile LEMP (le "e" signifie alors [e]nginx). De nombreux services Web utilisent cette architecture et, selon leur taille et leurs besoins, exploitent un grand nombre de serveurs MySQL, qui sont utilisés pour gérer l'accès depuis le réseau. [10] MySQL est utilisé par Flickr , [11] YouTube , [12] Facebook , entre autres [13][14] et Twitter . [15] En outre, MySQL est utilisé dans de nombreux produits en tant que système de base de données intégré. [16] MariaDB est un fork de MySQL et compatible avec MySQL, donc la migration des bases de données MySQL est assez facile. Le fondateur de MySQL, Monty Widenius, a développé le nouveau fork après qu'Oracle a acheté MySQL et, avec une équipe d'anciens développeurs de MySQL, l'étend pour que davantage de fonctionnalités soient désormais disponibles. Dans certains cas, la migration inverse n'est plus possible sans plus tarder après l'utilisation de ces fonctionnalités. Cela est particulièrement vrai lors de l'utilisation de moteurs de stockage tels que ColumnStores, que MySQL ne connaît pas. [17]

plates-formes et interfaces

MySQL fonctionne sur de nombreuses variantes d' Unix , macOS et Linux , mais aussi sur Windows , OS/2 et i5/OS (anciennement OS/400). Depuis début 2008, il existe également une variante Symbian .

Structure du système de stockage utilisé

MySQL fournit essentiellement un serveur MySQL, sur lequel les données sont stockées, et un ou plusieurs clients MySQL, qui envoient des requêtes au serveur, auxquelles il répond. Le port par défaut pour le serveur MySQL est 3306dans Transmission Control Protocol (TCP).

Plusieurs bases de données peuvent être créées sur le système de gestion de base de données , le serveur MySQL. Plusieurs tables peuvent être créées dans une base de données . En pratique, MySQL crée un dossier sur le disque dur pour chaque base de données, dans lequel sont stockés les fichiers de la structure et les données des tables individuelles. Le format exact de ces fichiers dépend du moteur de stockage utilisé pour chaque table.

Les tables peuvent chacune être d'un type différent. Le type de table détermine quel moteur de stockage (sous-système de stockage) est utilisé pour les requêtes vers une table. Chaque table peut contenir des colonnes pouvant stocker des données d'un type de données spécifié (par exemple, entiers ou chaînes ). La taille maximale des tables n'est fondamentalement limitée que par le système d'exploitation .

Processus de traitement d'une demande

Un client peut envoyer des requêtes de base de données à un serveur MySQL. Celui-ci est chargé de traiter chaque demande le plus efficacement possible. Tout d'abord, le cache de requête est interrogé et, si le résultat n'est pas disponible, la requête est analysée, optimisée et finalement exécutée ; le résultat est ensuite retourné.

cache de requête

Pour améliorer les performances, MySQL peut stocker les résultats des requêtes dans un tampon, le cache des requêtes. Si une requête identique est ensuite envoyée au serveur sans que les données de la base de données aient changé entre-temps, elle sera répondue à partir du cache. Il n'est alors pas nécessaire d'accéder à la base de données elle-même. [18]

analyse

Si une requête doit être exécutée, on vérifie d'abord si sa syntaxe est valide. Il est décomposé en ses composants individuels. Dans le même temps, certaines informations de base sur la requête sont collectées, telles que le type de requête (par exemple SELECT, INSERT, SET ou GRANT), les tables impliquées ou le contenu de la clause WHERE. A la fin de cette étape, MySQL connaît l'arbre d'analyse, qui peut alors être optimisé. [19]

optimisation

Si une requête est syntaxiquement valide, elle est ensuite optimisée. L' optimiseur recherche la manière la plus efficace de traiter la requête. L'objectif principal est de limiter autant que possible le nombre d'enregistrements de données à lire. Ceci est réalisé, par exemple, lorsque des enregistrements de données doivent être lus à partir de plusieurs tables, via une séquence de requête intelligente ( JOIN ) des tables ; Les tables qui ne sont pas requises sont complètement supprimées du JOIN. Entre autres choses, l'optimiseur prend en compte s'il est judicieux d'utiliser un index (et si oui, lesquels) pour localiser les enregistrements que vous recherchez, ou s'il serait préférable d'effectuer une analyse de table à la place, c'est-à-dire. c'est-à-dire parcourir toute la table.

Les alternatives disponibles sont évaluées par l'optimiseur. Les heuristiques sont utilisées pour estimer la durée d'exécution de chaque option. L'alternative qui a les coûts les plus bas est alors effectivement mise en œuvre.

Le travail de l'optimiseur peut être compris avec la commande MySQL EXPLAIN. Cette commande (suivie d'une requête spécifique) demande à l'optimiseur de retourner son plan de requête . En sortie, l'utilisateur reçoit des informations pour chaque étape que l'optimiseur prendrait pour répondre à la requête. De cette façon, avec quelques connaissances de base, vous pouvez déterminer comment la requête peut être optimisée afin qu'elle s'exécute plus rapidement. [18]

histoire

Michael Widenius et David Axmark ont ​​commencé à développer MySQL en 1994. [20] Il a été initialement développé comme un clone pour mSQL afin de rendre les bases de données du système de base de données piloté par masque UNIREG disponibles dans les applications Web. (UNIREG a été développé par Michael Widenius en 1979 et réécrit dans le langage de programmation C vers 1986 afin qu'il puisse également fonctionner sous les systèmes UNIX.) MySQL était donc entièrement compatible avec mSQL et UNIREG.

Après une sortie interne le 23 mai 1995, le logiciel est immédiatement sorti en 1997 avec le numéro de version 3.1 pour signaler qu'il était basé sur un noyau avec une longue histoire. Il a été conçu dès le départ pour de grandes quantités de données et de très bonnes performances, parfois au détriment de la stabilité et de la disponibilité. L'éventail des fonctions, en revanche, était initialement limité. Il n'y avait que quelques types de tables et aucune transaction. Typiquement, de nouvelles propriétés sont implémentées à la demande de l'utilisateur, qui a donc un très large mot à dire.

Avec la version 3.23, sortie en janvier 2001, MySQL disposait de deux types de tables avec transactions , dont l'une ( InnoDB ) répond aux critères ACID . Toutes les opérations affectant les propriétés SQL générales sont les mêmes pour tous les types de table, tandis que les propriétés des types de table peuvent être très différentes en raison de l'architecture différente. Depuis la première version 3.23 , le type MyISAM dispose d'une recherche en texte intégral très puissante, qui n'est pas implémentée dans le type InnoDB. Le système de réplication est également nouveau dans la version 3.23. Il est conçu pour être utilisé dans un réseau informatique et est idéal pour une connexion ininterrompueopération sur. Plusieurs bases de données sur différents nœuds informatiques sont affectées au système de gestion de base de données (SGBD). L'une des bases de données agit en tant que maître ; le contenu de la base de données est modifié ici. Le système de réplication distribue ensuite les commandes SQL de modification des données aux autres bases de données, qui répliquent ces modifications localement dans leurs tables. Il s'agit donc d'une réplication asynchrone des commandes SQL. Avec le cluster MySQL , un type de table est disponible dans lequel toute la base de données est stockée en mémoire en tant que base de données en mémoirepeut être tenu. La réplication synchrone entre tous les nœuds de cluster et le traitement des transactions est pris en charge, mais pas de recherche en texte intégral.

MySQL 4.0, sorti en mars 2003, autorisait l'utilisation d' unions et introduisait un cache de requêtes qui met en cache les résultats des requêtes SQL fréquemment utilisées. [21]

En octobre 2004, MySQL 4.1 est sorti. Il offre un stockage de données dans différents jeux de caractères par table ; entre autres choses, Unicode est également pris en charge. Les sous-requêtes (sous-requêtes/sous-sélections) sont possibles. [22]

La version 5.0 est sortie en octobre 2005. Il prend en charge tous les types d'objets définis dans le standard SQL3 . La nouveauté de la version 5 est la prise en charge des vues , des déclencheurs , des procédures stockées et des fonctions définies par l' utilisateur .

En février 2008, Sun Microsystems a acquis MySQL AB. La valeur d'achat est d'un milliard de dollars; dont 200 millions en stock-options. [23] [24]

MySQL 5.1 est sorti en novembre 2008 [25] . Les nouvelles fonctionnalités incluent non seulement des fonctions de partition , avec lesquelles de très grandes tables peuvent être divisées en plusieurs fichiers physiques, un planificateur d'événements à l'aide duquel des commandes SQL précédemment définies peuvent être exécutées à intervalles réguliers, et des fonctions de gestionnaire d'instance. L'API a été révisée afin que le chargement et le déchargement des composants soient désormais possibles pendant l'exécution et sans redémarrage du serveur. [26]

En janvier 2010, Sun Microsystems a été racheté par Oracle. [27] Quelques mois plus tard, Oracle a annoncé que le développement du moteur de base de données Falcon , qui avait déjà été lancé par MySQL AB, serait interrompu.

Fin 2010, MySQL 5.5 est sorti. InnoDB est devenu le moteur de stockage par défaut. Les performances ont été améliorées grâce à l'utilisation d'E/S asynchrones. Autre nouveauté, les commandes SIGNAL/RESIGNAL, qui permettent une gestion des erreurs conforme aux normes dans les procédures stockées. [28] [29]

MySQL 5.6, sorti en 2012, inclut entre autres. API Memcached , ID de transaction globaux et améliorations de PERFORMANCE_SCHEMA. [30]

En janvier 2009, avant même qu'Oracle n'achète MySQL AB, Monty Widenius a lancé un fork GPL,  MariaDB . MariaDB est basé sur la base de code du serveur MySQL 5.5 et s'est fixé pour objectif de maintenir en grande partie la compatibilité avec les versions MySQL publiées par Oracle. [31]

Le développement de MySQL 5.7 a pris au total plus de deux ans jusqu'à sa sortie finale fin octobre 2015. La nouvelle version se caractérise notamment par des performances accrues, une réplication et une journalisation améliorées. Par exemple, les développeurs de MySQL ont ajouté un modèle de coût dynamique à l'optimiseur de requêtes, ce qui permet une exécution plus rapide et offre à l'utilisateur plus d'options d'intervention. [32]

Avec un saut de version vers MySQL 8, le développement suivant est apparu en 2018. Selon la documentation [33] , la série de versions 8 est apparemment une mise à niveau, de sorte que les numéros de version sont actuellement comptés de deux manières.

critique

Depuis qu'Oracle a repris MySQL AB de Sun, le système de base de données a été de plus en plus critiqué. La différence entre les versions gratuite et commerciale de MySQL devient de plus en plus prononcée. [34] Les nouvelles fonctions ne sont souvent incluses que dans la version commerciale de MySQL. Ajoutez à cela la base de données non publique des rapports de bogues, les archives Bazaar obsolètes et les tests manquants pour le débogage. [35]

Depuis la fin de 2012, la prise en charge de MySQL dans la communauté open source s'est également érodée. Après Fedora et OpenSUSE , Slackware et Arch Linux ont également remplacé le package MySQL par MariaDB début 2013 , un fork du co-fondateur Widenius. Les déclencheurs sont le manque de respect de la communauté et le développement de plus en plus isolé du SGBDR. [36] [37] La ​​Wikimedia Foundation est également passée à MariaDB au début de 2013.

Jaroslav Reznik, responsable du projet Fedora de Red Hat, a expliqué que MySQL s'oriente vers un projet fermé. Toutes les informations utiles sur les problèmes de sécurité (CVE) ne seraient plus publiées. Les tests de régression complets n'existent plus et une très grande partie de la base de données de bogues MySQL n'est plus publique. [38]

Michael Widenius, l'ancien fondateur de MySQL AB, critique vivement Oracle : Oracle a clairement fait savoir qu'ils n'avaient aucun intérêt pour l'open source, refusaient de travailler avec la communauté et n'aimaient pas MySQL en général. Il cite les extensions commerciales pour MySQL, la base de données d'erreurs désormais non publique et le manque de cas de test pour le nouveau code MySQL comme exemples du mépris des principes open source. Les fonctionnalités phares telles que la sauvegarde en ligne et les clés étrangères pour tous les moteurs de stockage promis pour MySQL 6.0 n'ont pas été publiées, bien qu'elles soient entièrement développées et prêtes. Au lieu de corriger les bogues, supprimez les fonctionnalités Oracle. La plupart des développeurs originaux de MySQL auraient quitté Oracle.[39]

sous-systèmes de stockage

MySQL propose différents sous-systèmes de stockage (moteurs). Chaque moteur est optimisé pour un scénario de déploiement spécifique. Par rapport à l'architecture multicouche traditionnelle des systèmes de bases de données, les moteurs ne sont pas purement un sous-système de stockage, mais offrent plus de fonctionnalités. La gestion des transactions, des index et de l'intégrité référentielle est entre les mains du moteur.

Les moteurs de stockage individuels prennent en charge différentes fonctions et ont des performances différentes selon le domaine d'application. En fonction de l'utilisation d'une table (par exemple, lire principalement des requêtes SELECT ou écrire principalement des requêtes INSERT/UPDATE), un moteur de stockage approprié doit être choisi. Un autre critère de choix du moteur de stockage peut également être la nécessité d'utiliser une fonction spécifique, comme par ex. B. transactions ou intégrité référentielle.

MySQL peut également être étendu avec vos propres moteurs de stockage. [40] Outre les moteurs édités par MySQL et fournis avec MySQL, il existe également des moteurs d'autres constructeurs.

Moteurs officiels

MonISAM

MyISAM fournit un accès rapide aux tables et aux index sans assurance de transaction. L'accès parallèle à la base de données (concurrence) est géré par MySQL au niveau de la table, c'est-à-dire que toute la table est verrouillée pour des opérations spécifiques selon le type de verrou (lecture ou écriture ). Un grand nombre d'accès en lecture simultanés est possible, car les accès en lecture n'acquièrent que des verrous dits en lecture. Ceux-ci permettent à d'autres « LECTEURS » d'accéder au même ensemble de données en même temps. Cependant, l'accès en écriture doit attendre que tous les " READERS " courants aient terminé leurs opérations de lecture et ainsi libéré leur verrou READ. Un « READER » n'a donc qu'à bloquer les autres « WRITER ».

Un enregistrement modifié ne peut être lu ni écrit d'aucune autre manière. Ainsi, un "WRITER" (accès en écriture aux données) doit bloquer les autres "READER" et "WRITER". Cela se fait à l'aide d'un "verrou d'écriture". Cela a également lieu au niveau de la table, ce qui signifie que la totalité de la table n'est pas accessible en lecture ou en écriture pendant ce temps jusqu'à ce que le "verrou d'écriture" soit levé.

MyISAM est un moteur de stockage très efficace pour un mélange de requêtes composé principalement d'accès en lecture. Les autres avantages de MyISAM sont :

  • propriété d'auto-incrémentation la plus flexible de tous les moteurs de stockage
  • Les tables MyISAM peuvent être converties en tables compressées en lecture seule
  • Les tables MyISAM peuvent avoir une longueur de ligne fixe, ce qui permet des recherches de ligne plus rapides
  • Les tables MyISAM peuvent être utilisées pour créer des tables MERGE
  • MyISAM est hautement portable car les fichiers de table (fichier .frm (structure de table), .MYD (fichier de données), .MYI (fichier d'index)) peuvent être copiés sur une autre machine et y sont immédiatement disponibles en tant que tables de base de données.
  • Recherche en texte intégral puissante

MySQL gère les droits d'accès via des tables d'octroi dans la base de données mysql, qui (même dans la dernière version) sont stockées exclusivement dans des tables MyISAM. Par conséquent, MyISAM ne peut pas être exclu lors de la compilation ou du démarrage du serveur. De plus, MyISAM était le moteur de stockage par défaut jusqu'à la version 5.1 de MySQL, après quoi InnoDB a pris cette place.

InnoDB

InnoDB offre un accès en lecture et en écriture sécurisé pour les transactions, i. c'est-à-dire qu'il offre des fonctions de début, de validation et d'annulation. Cela garantit qu'une requête, ou un ensemble de requêtes associées, s'exécute complètement ou pas du tout, mais pas de manière incomplète. Le niveau d'isolement souhaité des transactions peut être défini. Cela peut réduire la certitude d'une exécution complète et correcte, ce qui a un effet positif sur la vitesse d'exécution.

InnoDB offre également la possibilité de vérifier les relations de clés étrangères. Depuis MySQL 5.5, InnoDB est le moteur de stockage par défaut. [28] À partir de MySQL 5.6, une recherche en texte intégral sera également possible dans les tables InnoDB. [41] Cependant, InnoDB n'est pas entièrement conforme à la norme SQL3 : les clés étrangères ne sont prises en charge que dans une mesure limitée. [42]

InnoDB stocke la structure de la table dans des fichiers frm individuels, la charge utile et les index dans un espace table. L'espace table est défini avant de commencer à travailler avec le serveur de base de données et peut s'étendre sur un ou plusieurs fichiers. Les fichiers d'espace de table peuvent être répartis dans différents répertoires. La configuration du tablespace ne peut pas être ajustée par la suite sans risquer de perdre des données. Après modification de la configuration du tablespace, la totalité de la base de données est restaurée à partir d'une copie de sauvegarde.

FUSIONNER

MERGE offre la possibilité de combiner plusieurs tables de type MyISAM avec la même structure en une seule table et d'y accéder. Les tables MyISAM compressées peuvent être combinées avec des tables MyISAM non compressées. De cette manière, l'archivage des données peut être mis en œuvre.

MÉMOIRE (TAS)

Gestion des tables temporaires. La définition des tables est stockée en permanence sur le disque dur. Les données sont stockées en mémoire. Cependant, tous les types de données ne sont pas pris en charge. Au redémarrage du serveur, les structures de table sont toujours disponibles, le contenu doit être lu à nouveau, par exemple à partir de tables permanentes. Des procédures spéciales de gestion de la mémoire sont mises en œuvre pour réutiliser l'espace des enregistrements supprimés lors de la prochaine insertion.

EXEMPLE

Exemple de code pour développer votre propre moteur de stockage. EXEMPLE possède des fonctions de création de table, les fonctions d'écriture et de lecture des enregistrements sont seulement indiquées. Une instruction SELECT renvoie toujours un jeu de résultats vide.

BDB

BDB est l'abréviation de Berkeley DB . Ce moteur de stockage a été développé par Sleepycat Software et vendu plus tard à Oracle . La BDB offre une sécurité des transactions et des précautions particulières pour s'assurer que les données stockées sont conservées en cas de défaillance du système.

Le moteur de stockage BDB n'est plus pris en charge à partir de la version 5.1.

FÉDÉRÉ

Le moteur FEDERATED permet d'accéder aux tables situées sur un autre serveur. Si vous créez une table de type FEDERATED, la table distante doit déjà exister sur l'autre serveur. Le serveur local se comporte comme un client accédant au serveur distant. Le moteur FEDERATED se comporte comme un système d'information fédéré , ce qui signifie qu'il ne stocke pas les données lui-même, mais donne accès au serveur distant alors que les données sont également accessibles sur celui-ci. La version 5.0 ne peut accéder qu'aux autres serveurs MySQL.

Les données d'accès au serveur de base de données distant sont enregistrées en clair dans le fichier frm local. L'accès au répertoire de données doit être limité au niveau du système d'exploitation afin d'empêcher des personnes non autorisées de lire les droits d'accès.

LES ARCHIVES

Le moteur ARCHIVE est conçu pour stocker de grandes quantités de données tout en utilisant le moins possible l'espace de stockage disponible. Les index ne peuvent pas être créés. Seuls les accès INSERT et SELECT sont pris en charge. L'accès rapide aux données n'est pas la priorité ici.

Avant que les données ne soient stockées sur le support de stockage, elles sont d'abord collectées dans un tampon de compression. Lorsqu'une série d'opérations d'insertion est terminée, l' algorithme de compression optimal est déterminé et les données sont émises sous forme compressée.

Si une requête SELECT est reçue d'un autre utilisateur pendant une séquence d'opérations d'insertion, une compression et une sortie prématurées des données stockées dans le tampon de compression sont forcées.

CSV

Avec le moteur CSV, les données sont enregistrées au format CSV : Les nombres ne sont pas enregistrés sous forme binaire, mais sous forme de séquences de chiffres ; les valeurs individuelles sont séparées par des virgules.

TROU NOIR

BLACKHOLE est conçu pour vérifier la syntaxe des instructions SQL et écrire un journal binaire. Les données ne seront pas enregistrées. Cela permet d'effectuer des vérifications de la syntaxe des instructions SQL sans avoir à allouer d'espace disque pour stocker les données. La sortie du journal binaire peut être activée et désactivée via un paramètre.

Le moteur BLACKHOLE est idéal pour les tâches suivantes :

  • Vérification de la syntaxe des fichiers de vidage
  • Tester la réplication des données en comparant ensuite les journaux binaires sur le serveur maître et le serveur esclave.
  • Mesures de temps pour déterminer le coût d'écriture du journal binaire.

FIS

NDB est l' abréviation de Network Data Base . Le moteur de stockage NDB est un composant indépendant qui fournit un stockage persistant des données et est responsable de la coordination de tous les accès aux nœuds de données dans un cluster MySQL . [43] Les applications peuvent accéder au moteur de stockage NDB directement via l'API NDB ou via un nœud MySQL. L'accès via un nœud MySQL est beaucoup plus facile pour les programmeurs d'applications, car dans ce cas, les commandes SQL standard peuvent être utilisées et l'apprentissage des spécialités NDB n'est pas nécessaire.

L'API NDB est une interface multi- thread pour accepter toutes les demandes de données entrantes. [43] Un ou plusieurs threads sont démarrés pour chaque demande. Seul un accès séquentiel à l'API NDB est possible, ce qui limitera probablement les performances du cluster lorsqu'il y a un grand nombre de requêtes entrantes.

Moteurs d'autres fournisseurs

En plus des moteurs officiels, plusieurs fabricants proposent également d'autres moteurs avec des propriétés différentes ou des fonctions supplémentaires. Quelques-uns sont mentionnés ici à titre d'exemple.

moteur de révision

Le moteur de révision de DDEngine ajoute la gestion automatique des versions en tant que plug-in au niveau du moteur de stockage. En plus de simplement stocker des données, ce moteur peut garantir que les données peuvent être restaurées telles qu'elles étaient à un moment donné. Cette propriété peut par ex. B. être utilisé pour enregistrer l'historique des propriétés du produit ou pour répondre aux exigences légales. Les moteurs de stockage fournis sont utilisés pour stocker physiquement les données. [44]

Moteur Brighthouse

Infobright [45] fournit le Brighthouse Engine. Il est conçu pour les applications d' entrepôt de données et orienté vers le traitement de quantités particulièrement importantes de données. Les index ne sont pas pris en charge. Les données sont stockées sous forme compressée, ce qui, selon le fabricant, peut économiser jusqu'à 90 % de l'espace de stockage. [46]

partitionnement

À partir de la version 5.1, les tables MySQL peuvent être partitionnées . Vous avez le choix entre plusieurs types de partitionnement. [47]

partitionnement de plage

Avec le partitionnement par plage, des plages de valeurs sont définies pour les partitions individuelles.

L'exemple crée une table avec trois partitions. Avec cette syntaxe, la colonne 'region' ne peut contenir que des valeurs inférieures à 30.

CREATE  TABLE  `customer`  ( 
  region  int  NOT  NULL , 
  nr  int  NOT  NULL , 
  name  char ( 30 ), 
  ed  date  NOT  NULL 
) 
PARTITION  BY  range ( region )  ( 
  PARTITION  p0  VALUES  MOINS  DE  ( 10 ), 
  PARTITION  p1  VALUES  MOINS  DE  ( 20 ), 
  PARTITION  p2  VALEURS  MOINS QUE  ( 30 ) 
);

Le partitionnement peut également être déterminé par une expression. L'expression doit générer un entier comme résultat. Si la dernière partition est définie avec la valeur 'maxvalue', vous pouvez insérer tous les nombres entiers dans la colonne 'region' (exemple ci-dessus) ou toutes les valeurs de date dans la colonne 'ed' (exemple ci-dessous).

CREATE  TABLE  `customer`  ( 
  region  int  NOT  NULL , 
  nr  int  NOT  NULL , 
  name  char ( 30 ), 
  ed  date  NOT  NULL 
) 
PARTITION  BY  range ( year ( ed ))  ( 
  PARTITION  p0  VALUES  LESS  THAN  ( 1990 ), 
  PARTITION  p1  VALUES  LESS  QUE  ( 2000 ), 
  PARTITION  p2  VALEURS MOINS  DE  valeurmax 
);

Partitionnement de liste

Avec la partition de liste, les valeurs sont énumérées individuellement.

Exemple:

CREATE  TABLE  `customer`  ( 
  region  int  NOT  NULL , 
  nr  int  NOT  NULL , 
  name  char ( 30 ), 
  ed  date  NOT  NULL 
) 
PARTITION  BY  list ( region )  ( 
  PARTITION  p0  VALUES  IN  ( 1 ,  3 ,  5  ), 
  PARTITION  p1  VALUES  IN  ( 2 ,  4 ,  6  ),
  PARTITION  p2  VALEURS  DANS  ( 10 ,  11 ,  12  ) 
);

partitionnement par hachage

Avec le partitionnement par hachage, la distribution des enregistrements sur les partitions individuelles est déterminée par le SGBD. Dans le partitionnement de hachage régulier, la fonction modulo est utilisée comme fonction de hachage (région modulo 4). Il a l'avantage que tous les nombres entiers peuvent être insérés dans la colonne 'région'.

CREATE  TABLE  `customer`  ( 
  region  int  NOT  NULL , 
  nr  int  NOT  NULL , 
  name  char ( 30 ), 
  ed  date  NOT  NULL 
) 
PARTITION  BY  hash ( region )  PARTITIONS  4 ;

Il existe également un partitionnement de hachage "linéaire". Une fonction de hachage différente est utilisée pour cela.

partitionnement de clé

Le partitionnement de clé utilise implicitement une fonction de hachage . La clé primaire de la table sert d'entrée pour la fonction.

CREATE  TABLE  `customer`  ( 
  nr  int  NOT  NULL  clé primaire  , name char ( 30 ), ed date NOT NULL ) PARTITION BY key () PARTITIONS 4 ;
   
     

    

Le partitionnement par clé est utilisé implicitement pour toutes les tables du moteur de stockage NDB . Cela facilite la coordination interne de la réplication.

sous-partitions

Des 'sous-partitions' peuvent également être définies pour chaque type de partitionnement. Cela permet une ventilation encore plus granulaire des données.

administration

Sous Linux, MySQL s'installe dans le répertoire /var/lib/mysql/ . Sous Windows, l'utilisateur détermine l'emplacement de stockage des fichiers de données - la valeur par défaut est le dossier %ProgramFiles%\MySQL . Les paramètres de base sont définis par l'administrateur dans le fichier my.cnf .

outils de ligne de commande

Le client de ligne de commande fourni (commandes mysqlet mysqladmin) est utilisé pour gérer les bases de données MySQL. La gamme de fonctions comprend également les outils de ligne de commande suivants :

mysqlimport
peut être utilisé en remplacement de 'LOAD DATA INFILE …'. En spécifiant des paramètres, les utilisateurs peuvent se connecter et contrôler le comportement du programme.
mysqldump
peut être utilisé comme substitut de 'SELECT * INTO OUTFILE'. De plus, la structure de la table peut être sortie sous forme de vidage. En spécifiant des paramètres, les utilisateurs peuvent se connecter et contrôler le comportement du programme.
erreur
affiche des informations détaillées sur les codes d'erreur. Le code d'erreur est requis comme paramètre lors du démarrage du programme.
mysqlshow
génère des métadonnées sur les bases de données, les tables ou les colonnes de table individuelles.

Outils graphiques

Oracle propose le logiciel MySQL Workbench comme logiciel de gestion graphique . Il est disponible pour les systèmes d'exploitation Windows , macOS et Linux .

L'une des nombreuses alternatives est l' application open source phpMyAdmin écrite dans le langage de script PHP . L' interface utilisateur graphique peut être commandée via un navigateur . phpMyAdmin est principalement utilisé pour gérer des bases de données MySQL sur des serveurs Web où chaque utilisateur n'a aucun droit et s'exécute directement. L'application open source phpMyBackupPro , également écrite en PHP, est souvent utilisée pour créer et gérer des sauvegardes de bases de données sur des serveurs Web - s'il n'y a pas de droits d'exécution . mysqlmysqladminmysqldump

Licence et assistance

Oracle utilise un système de double licence pour distribuer MySQL Server : d'une part, le programme est un logiciel libre soumis à la licence publique générale (GPL) , d'autre part, il est également proposé sous une licence commerciale .

Le manuel officiel propose dans un premier temps un support pour l'utilisation de MySQL. [48] ​​Il existe également plusieurs forums et canaux IRC où les questions sont répondues gratuitement.

En outre, Oracle propose également des licences de support payantes dans trois niveaux de performances : MySQL Enterprise Silver, Gold et Platinum. [49] Ils diffèrent en termes d'étendue des services et de prix. [50] [51]

Produits liés à MySQL

Littérature

  • Stefan Proell, Eva Zangerle, Wolfgang Gassler : MySQL : Le manuel de l'administrateur . Rheinwerk Verlag, 2015, ISBN 978-3-8362-3753-6 .

liens web

Commons : MySQL  - Collection d'images, de vidéos et de fichiers audio

les détails

  1. Changements dans MySQL 8.0.29 (2022-04-26, disponibilité générale) . 26 avril 2022 (consulté le 27 avril 2022).
  2. a b c d e Plates-formes prises en charge : base de données MySQL . (Anglais, consulté le 28 juillet 2018).
  3. Le projet open source mysql sur Open Hub : Page des langues . Dans : OpenHub . (Anglais, consulté le 28 juillet 2018).
  4. Le projet open source mysql sur Open Hub : Page des langues . Dans : OpenHub . (consulté le 19 juillet 2018).
  5. github.com . (consulté le 27 septembre 2017).
  6. www.mysql.com . (consulté le 27 septembre 2017).
  7. Michael Widenius : Michael Widenius interviewé à la MySQL Conference 2010. O'Reilly, avril 2010, consulté le 16 novembre 2016 .
  8. Classement des moteurs DB . Consulté le 8 septembre 2013.
  9. Système d'aide de la version MySQL 5.0 chapitres 1.3 et 1.4 ou http://dev.mysql.com/doc/refman/5.1/en/history.html
  10. mysql.de
  11. YouTube, Flickr et Wikipedia partageront leurs secrets de réussite lors de la MySQL Conference & Expo 2007 . O'Reilly. 10 avril 2007. Récupéré le 29 septembre 2012.
  12. Clients MySQL par secteur : Web : Réseaux sociaux . Consulté le 5 janvier 2012.
  13. Jason Sobel : Garder le rythme . Dans : Blog Facebook . 21 décembre 2007. Récupéré le 30 octobre 2008.
  14. Om Malik : La faim insatiable de Facebook pour le matériel . GigaOM . 25 avril 2008. Récupéré le 30 octobre 2008.
  15. Big et Small Data sur Twitter : MySQL CE 2011 . monNoSQL . 17 avril 2011. Récupéré le 20 octobre 2011.
  16. ↑ À propos de MySQL Embedded Server 5.1 , récupéré le 27 septembre 2010
  17. https://www.informatik-aktuell.de/betrieb/rechner/mariadb-und-mysql-vergleich-der-features.html Comparaison de MySQL et MariaDB
  18. a b Pour plus de détails, voir notamment Sasha Pachev : Understanding MySQL Internals, Chapter 9 : Parser and Optimizer, O'Reilly
  19. Les modules responsables de l'analyse se trouvent dans les fichiers sql/sql_yacc.yy, sql/gen_lex_hash.cc et sql/gen_lex.cc.
  20. Cinq questions à Michael Widenius - Fondateur et développeur original de MySQL . Opensourcereleasefeed.com. Archivé de l' original le 13 mars 2009. Récupéré le 8 juin 2009.
  21. Manuel de référence de la version 4.0 ( mémento de l' original du 4 avril 2013 sur WebCite ) Info : Le lien de l'archive a été inséré automatiquement et n'a pas encore été vérifié. Veuillez vérifier le lien d'origine et d'archive conformément aux instructions , puis supprimer cet avis. @1@2Vorlage:Webachiv/IABot/dev.mysql.com
  22. MySQL Reference Manual Version 4.1 ( Memento des Originals du 4 avril 2013 sur WebCite ) Info : Le lien de l'archive a été inséré automatiquement et n'a pas encore été vérifié. Veuillez vérifier le lien d'origine et d'archive conformément aux instructions , puis supprimer cet avis. @1@2Vorlage:Webachiv/IABot/dev.mysql.com
  23. Sun prend le contrôle de MySQL - News at TecChannel
  24. Sun rachète MySQL AB ( souvenir du 31 juillet 2008 sur Internet Archive )
  25. heise.de
  26. dev.mysql.com ( mémento de l' original du 17 février 2012 dans Internet Archive ) Info : Le lien de l'archive a été inséré automatiquement et n'a pas encore été vérifié. Veuillez vérifier le lien d'origine et d'archive conformément aux instructions , puis supprimer cet avis. @1@2Vorlage:Webachiv/IABot/dev.mysql.com
  27. Communiqué de presse Oracle : Oracle finalise l'acquisition de Sun
  28. une b oracle.com
  29. heise.de
  30. Innovations dans MySQL 5.6 ( Memento des Originals du 23 avril 2011 dans Internet Archive ) Info : Le lien de l'archive a été inséré automatiquement et n'a pas encore été vérifié. Veuillez vérifier le lien d'origine et d'archive conformément aux instructions , puis supprimer cet avis. (anglais), consulté le 23 juin 2012 @1@2Vorlage:Webachiv/IABot/dev.mysql.com
  31. MariaDB versus MySQL – Compatibilité . Dans : Base de connaissances MariaDB . ( mariadb.com [consulté le 8 février 2017]).
  32. Communiqué de presse : Oracle Announces General Availability of MySQL 5.7 , consulté le 30 août 2017
  33. Doc
  34. pro-linux.de
  35. golem.de
  36. pro-linux.de Slackware passe à MariaDB Par Mirko Lindner, lundi 25 mars 2013, 14h07
  37. blog.wikimedia.org Wikimedia Foundation passe à MariaDB
  38. zdnet.com
  39. computerworld.com.au ( Memento des Originals du 21 février 2016 dans Internet Archive ) Info : Le lien de l'archive a été inséré automatiquement et n'a pas encore été vérifié. Veuillez vérifier le lien d'origine et d'archive conformément aux instructions , puis supprimer cet avis. @1@2Vorlage:Webachiv/IABot/www.computerworld.com.au
  40. MySQL Version 5.0 Manuel de référence Chapitre 14. Moteurs de stockage et types de tables
  41. golem.de
  42. dev.mysql.com sur les contraintes de clé étrangère dans MySQL 5.6 . dev.mysql.com. Archivé de l' original le 16 avril 2015. Info : Le lien d'archive a été inséré automatiquement et n'a pas encore été vérifié. Veuillez vérifier le lien d'origine et d'archive conformément aux instructions , puis supprimer cet avis. Consulté le 1er février 2012. @1@2Vorlage:Webachiv/IABot/dev.mysql.com
  43. ^ un b Larissa Janssen : Systèmes de base de données de haute performance : Théorie et pratique , pp. 190–191.
  44. ddengine.org ( mémento de l' original du 10 mai 2012 dans Internet Archive ) Info : Le lien de l'archive a été inséré automatiquement et n'a pas encore été vérifié. Veuillez vérifier le lien d'origine et d'archive conformément aux instructions , puis supprimer cet avis. @1@2Vorlage:Webachiv/IABot/www.ddengine.org
  45. Site Web d'Infobright à Toronto
  46. Informations sur le sujet des entrepôts de données ( Memento des Originals du 24 décembre 2011 dans Internet Archive ) Info : Le lien de l'archive a été inséré automatiquement et n'a pas encore été vérifié. Veuillez vérifier le lien d'origine et d'archive conformément aux instructions , puis supprimer cet avis. @1@2Vorlage:Webachiv/IABot/www.mysql.de
  47. dev.mysql.com
  48. dev.mysql.com
  49. mysql.de
  50. Offre de services de support Oracle
  51. Oracle augmente les prix de MySQL
  52. Article "MySQL forks and patches" ( Memento des Originals du 23 décembre 2010 dans Internet Archive ) Info : Le lien de l'archive a été inséré automatiquement et n'a pas encore été vérifié. Veuillez vérifier le lien d'origine et d'archive conformément aux instructions , puis supprimer cet avis. @1@2Vorlage:Webachiv/IABot/www.admin-magazin.de
  53. drizzle.org ( mémento de l' original du 14 janvier 2013 dans Internet Archive ) Info : Le lien de l'archive a été inséré automatiquement et n'a pas encore été vérifié. Veuillez vérifier le lien d'origine et d'archive conformément aux instructions , puis supprimer cet avis. @1@2Vorlage:Webachiv/IABot/www.drizzle.org
  54. krow.livejournal.com