330 votes

Grand comment une base de données MySQL obtenir avant la performance commence à se dégrader

À partir de quel point une base de données MySQL commencent à perdre de la performance?

  • N'physique de la base de données taille de la matière?
  • N'nombre d'enregistrements de la matière?
  • Est de toute dégradation des performances linéaire ou exponentielle?

J'ai ce que je crois être une grande base de données, avec environ 15M dossiers qui prennent en hausse de près de 2 GO. Sur la base de ces chiffres, il n'existe aucune incitation pour moi de nettoyer les données, ou suis-je sûr de lui permettre de continuer de mise à l'échelle de quelques années de plus?

219voto

Nick Berardi Points 31361

La physique de la base de données de taille n'a pas d'importance. Le nombre de dossiers n'a pas d'importance.

Dans mon expérience, le plus grand problème que vous vous apprêtez à exécuter est pas la taille, mais le nombre de requêtes que vous pouvez gérer à un moment. Très probablement, vous allez avoir à passer à une configuration maître/esclave, de sorte que les requêtes de lecture peut s'exécuter sur des esclaves et de l'écriture de requêtes exécutées sur le maître. Toutefois, si vous n'êtes pas encore prête, vous pouvez toujours modifier votre index pour les requêtes que vous êtes en cours d'exécution pour accélérer le temps de réponse. Il y a aussi beaucoup de peaufinage que vous pouvez faire à la pile réseau et le noyau de Linux, qui va l'aider.

J'ai eu la mienne obtenir jusqu'à 10 go, avec seulement un nombre modéré de connexions et il a traité les demandes de l'amende juste.

Je voudrais mettre l'accent d'abord sur votre index, puis disposez d'un serveur admin oeil à votre système d'exploitation, et si tout cela ne vous aide pas, il serait peut-être temps de mettre en œuvre une configuration maître/esclave.

107voto

dlinsin Points 5863

En général c'est un très subtile question et remarque triviale que ce soit. Je vous encourage à lire mysqlperformanceblog.com et de Haute Performance MySQL. Je pense vraiment qu'il n'y a pas de réponse générale à cette.

Je suis en train de travailler sur un projet qui a une base de données MySQL avec près de 1 to de données. Le plus important facteur d'évolutivité est de la RAM. Si les index de vos tables de tenir en mémoire et vos requêtes sont hautement optimisé, vous pouvez vous servir d'un montant raisonnable des demandes, avec un moyenne de la machine.

Le nombre d'enregistrements de la matière, en fonction de la façon dont vos tables. C'est une différence d'avoir beaucoup de champs varchar ou seulement un couple d'entiers ou longs.

La taille physique de la base de données de questions: pensez à les sauvegardes, par exemple. En fonction de votre moteur, votre physique des fichiers db à se développer, mais de ne pas rétrécir, par exemple avec innodb. Ainsi, la suppression de beaucoup de lignes, n'aide pas à diminuer la taille de vos fichiers physiques.

Il y a beaucoup à ces questions et que, dans beaucoup de cas, le diable est dans les détails.

FDX5BX3

49voto

0x4a6f4672 Points 4986

La base de données de la taille a de l'importance. Si vous avez plus d'une table avec plus d'un million de disques, alors que les performances commencent en effet à se dégrader. Le nombre des enregistrements de cours d'incidence sur la performance: MySQL peut être lent, avec de grandes tables. Si vous frappez un million d'enregistrements, vous obtiendrez des problèmes de performances si les indices sont pas (par exemple, pas d'indices, pour les champs "OÙ les états" ou "conditions" dans les jointures). Si vous avez touché 10 millions de documents, vous commencez à avoir des problèmes de performances, même si vous avez tous vos indices de droit. Les mises à niveau matérielles - ajouter plus de mémoire et plus de puissance processeur, en particulier de la mémoire - souvent aider à réduire les problèmes les plus graves par augmentation de la performance de nouveau, au moins à un certain degré. Par exemple 37 signaux est passé de 32 GO de mémoire RAM de 128 GO de RAM pour le Basecamp serveur de base de données.

25voto

BlaM Points 10753

Je voudrais mettre l'accent d'abord sur votre index, que d'avoir un serveur admin oeil à votre système d'exploitation, et si tout cela ne vous aide pas, il pourrait être temps pour une configuration maître/esclave.

C'est vrai. Une autre chose qui fonctionne généralement à l'est de réduire la quantité de données qui repeadetly travaillé avec. Si vous avez des "données anciennes" et "nouvelles données" et 99% de vos requêtes de travailler avec de nouvelles données, il suffit de déplacer toutes les anciennes données d'une autre table et de ne pas le regarder ;)

-> Avoir un regard sur le partitionnement.

24voto

ian Points 69

De 2 go et d'environ 15M records est une très petite base de données - j'ai couru beaucoup plus grands sur un pentium III(!) et tout a toujours courir assez vite.. Si le vôtre est lent c'est une base de données/de l'application de conception de problème, pas une base de données mysql.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X