Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL :Plusieurs tables ou plusieurs bases de données ?

Il ne devrait pas y avoir de différence de performances significative entre plusieurs tables dans une seule base de données et plusieurs tables dans des bases de données distinctes.

Dans MySQL, les bases de données (le SQL standard utilise le terme "schéma" pour cela) servent principalement d'espace de noms pour les tables. Une base de données n'a que quelques attributs, par ex. le jeu de caractères et le classement par défaut. Et cette utilisation de GRANT facilite le contrôle des privilèges d'accès par base de données, mais cela n'a rien à voir avec les performances.

Vous pouvez accéder aux tables de n'importe quelle base de données à partir d'une seule connexion (à condition qu'elles soient gérées par la même instance de MySQL Server). Il vous suffit de qualifier le nom de la table :

SELECT * FROM database17.accounts_table;

C'est une différence purement syntaxique. Cela ne devrait avoir aucun effet sur les performances.

En ce qui concerne le stockage, vous ne pouvez pas organiser les tables dans un fichier par base de données comme le spécule @Chris. Avec le moteur de stockage MyISAM, vous avez toujours un fichier par table. Avec le moteur de stockage InnoDB, vous disposez soit d'un seul ensemble de fichiers de stockage qui regroupent toutes les tables, soit d'un fichier par table (ceci est configuré pour l'ensemble du serveur MySQL, et non par base de données). Dans les deux cas, il n'y a aucun avantage ou inconvénient en termes de performances à créer les tables dans une seule base de données par rapport à plusieurs bases de données.

Il n'y a pas beaucoup de paramètres de configuration MySQL qui fonctionnent par base de données. La plupart des paramètres qui affectent les performances du serveur s'appliquent à l'ensemble du serveur.

Concernant les sauvegardes, vous pouvez spécifier un sous-ensemble de tables comme arguments du mysqldump commande. Il peut être plus pratique de sauvegarder des ensembles logiques de tables par base de données, sans avoir à nommer toutes les tables sur la ligne de commande. Mais cela ne devrait faire aucune différence en termes de performances, uniquement pour vous faciliter la tâche lorsque vous entrez la commande de sauvegarde.