8
votes

Combien de bases de données peut-elle gérer MySQL?

Mon serveur MySQL compte actuellement 235 bases de données. Devrais-je m'inquiéter? Ils ont tous la même structure avec des tables myisam.

Le matériel est une machine virtuelle avec 2 Go de RAM en cours d'exécution sur un OPTERON AMD de quad-core 2.2GHz.

Récemment, cpanel m'a envoyé un email disant que MySQL a échoué et un redémarrage a été effectué.

Les nouvelles bases de données sont censées être créées et je me demande si je devrais ajouter plus de mémoire ou si je devais simplement ajouter une autre machine virtuelle.


1 commentaires

Bien que je n'ai jamais entendu parler d'une limite, je pourrais inspecter votre structure - sont-ils vraiment nécessaires?


4 Réponses :


0
votes

Je ne crois pas qu'il existe une limite difficile, la seule chose qui vous limite vraiment que votre matériel et votre trafic ces bases de données deviendront.

Vous semblez avoir très peu de mémoire, ce qui signifie probablement que vous n'avez pas beaucoup de connexions ...

Vous devez commencer par une utilisation en profilage pour chaque base de données (ou ensemble de bases de données, en fonction de la manière dont ils sont utilisés bien sûr).

Ma suggestion - MySQL (ou tout serveur de base de données pour cette matière) pourrait utiliser plus de mémoire. Vous ne pouvez jamais en avoir assez.


0 commentaires

0
votes

Vous le faites mal.

Commentaire avec des spécificités concernant vos bases de données et nous pouvons probablement vous remplir sur l'endroit où votre conception s'est trompé.


1 commentaires

Merci à tous pour vos commentaires. Le système est quelque chose de similaire avec Google Analytics. Les visites du site internet des utilisateurs sont connectées à une table "maître". Une application native surveille la table principale et traite les visites enregistrées et les écrit à la base de données des utilisateurs. Chaque utilisateur a sa propre dB. Cela a été décidé pour le frisson. Divers rapports et statistiques sont exécutés pour chaque utilisateur. Et il est plus rapide si cela ne fonctionne que sur une DB spécifique (moins de données), je sais que ce n'est pas la meilleure configuration. Mais nous devons y faire face pendant un moment.



8
votes

Les "bases de données" dans MySQL sont vraiment des catalogues, ne sont pas d'effet sur ses limites, que vous mettiez toutes les tables dans une ou chacune.

Le problème principal est le cache de table. Sans le régler, vous allez avoir le cache de table par défaut (= 64 typiquement), ce qui signifie que vous fermerez une table à chaque fois que vous ouvrez un. Ceci est incroyablement mauvais.

sauf dans Myisam, c'est encore pire, car la fermeture d'une table jette ses blocs de clé hors du cache de clé, ce qui signifie que des recherches ou des analyses d'index ultérieurs permettront de lire des blocs réels du disque, qui est horrible et lent et a vraiment besoin d'être évité.

Mon conseil est:

  • Si possible, augmentez immédiatement le cache de table sur> le nombre total de tables
  • Surveillez la variable de statut global ouverted_tables dans votre surveillance; Si cela augmente rapidement, c'est mauvais.
  • Effectuez des tests de performance et de robustesse sur votre même matériel dans un environnement de non-production (si vous ne le faites pas déjà).

2 commentaires

J'ajouterais également, cochez la limite de descripteur de fichier - sans directement connecté au non. des bases de données, vous pouvez utiliser des descripteurs de fichiers avec de nombreux tables de myisam.


Le script de démarrage normal augmentera le nombre (sous Linux) si nécessaire - il est certainement possible d'avoir 10 000 sans problème. Les autres moteurs peuvent également utiliser un descripteur de fichier par table.



1
votes

(republier mon commentaire pour une meilleure visibilité) Merci à tous pour vos commentaires. Le système est quelque chose de similaire avec Google Analytics. Les visites du site internet des utilisateurs sont connectées à une table "maître". Une application native surveille la table principale et traite les visites enregistrées et les écrit à la base de données des utilisateurs. Chaque utilisateur a sa propre dB. Cela a été décidé pour le frisson. Divers rapports et statistiques sont exécutés pour chaque utilisateur. Et il est plus rapide si cela ne fonctionne que sur une DB spécifique (moins de données), je sais que ce n'est pas la meilleure configuration. Mais nous devons y faire face pendant un moment.


1 commentaires

Cette information semble pertinente à la question initiale. Si vous souhaitez que cela ait une plus grande visibilité qu'un commentaire, pourquoi ne pas modifier la question initiale pour inclure ces informations?