mysql - votre - toutes les balises php pdf




Quelle taille peut avoir une base de données MySQL avant que les performances ne commencent à se dégrader? (9)

À quel moment une base de données MySQL commence-t-elle à perdre des performances?

  • La taille de la base de données physique est-elle importante
  • Le nombre d'enregistrements est-il important?
  • Une dégradation des performances est-elle linéaire ou exponentielle?

J'ai ce que je crois être une grande base de données, avec environ 15 millions d'enregistrements qui occupent près de 2 Go. Sur la base de ces chiffres, y a-t-il une incitation pour que je nettoie les données, ou suis-je sûr de lui permettre de continuer à évoluer pour quelques années de plus?


Je me concentrerais d'abord sur vos index, plutôt que d'avoir un administrateur de serveur qui regarde votre système d'exploitation, et si tout cela n'aide pas, il pourrait être temps pour une configuration maître / esclave.

C'est vrai. Une autre chose qui fonctionne habituellement est de simplement réduire la quantité de données qui a travaillé à plusieurs reprises avec. Si vous avez "anciennes données" et "nouvelles données" et que 99% de vos requêtes fonctionnent avec de nouvelles données, déplacez simplement toutes les anciennes données vers une autre table - et ne regardez pas;

-> Jetez un oeil à la partitioning .


2 Go et environ 15M d'enregistrements est une très petite base de données - j'ai couru beaucoup plus gros sur un pentium III (!) Et tout fonctionne encore assez vite .. Si le vôtre est lent c'est un problème de base de données / application, pas un mysql un.


Il est inutile de parler de "performance de la base de données", "performance de la requête" est un meilleur terme ici. Et la réponse est: cela dépend de la requête, des données sur lesquelles il opère, des index, du matériel, etc. Vous pouvez avoir une idée du nombre de lignes qui vont être analysées et des index qui vont être utilisés avec la syntaxe EXPLAIN.

2GB ne compte pas vraiment comme une "grande" base de données - c'est plus d'une taille moyenne.


Je gère actuellement une base de données MySQL sur l'infrastructure cloud d'Amazon qui a atteint 160 Go. La performance de la requête est correcte. Ce qui est devenu un cauchemar, ce sont les sauvegardes, les restaurations, l'ajout d'esclaves ou tout ce qui concerne l'ensemble de données, ou même le DDL sur les grandes tables. Obtenir une importation propre d'un fichier de vidage est devenu problématique. Afin de rendre le processus suffisamment stable pour être automatisé, divers choix devaient être faits pour prioriser la stabilité par rapport aux performances. Si jamais nous devions nous remettre d'une catastrophe en utilisant une sauvegarde SQL, nous serions en panne pendant des jours.

La mise à l'échelle horizontale de SQL est également très pénible et, dans la plupart des cas, conduit à l'utiliser d'une manière que vous n'entendiez probablement pas lorsque vous avez choisi de mettre vos données dans SQL en premier lieu. Des fragments, des esclaves lues, des multi-maîtres, etc., ce sont des solutions vraiment merdiques qui ajoutent de la complexité à tout ce que vous faites avec la BD, et aucun d'entre eux ne résout le problème; ne l'atténue que d'une certaine manière. Je vous suggérerais fortement de déplacer certaines de vos données hors de MySQL (ou de n'importe quel SQL) quand vous commencerez à approcher un ensemble de données d'une taille où ces types de choses deviennent un problème.


La taille de la base de données est importante en termes de nombre d'octets et de lignes de la table. Vous remarquerez une énorme différence de performance entre une base de données légère et une base remplie de blob. Une fois que mon application s'est bloquée, j'ai placé des images binaires à l'intérieur des champs au lieu de conserver les images dans les fichiers sur le disque et de mettre uniquement les noms de fichiers dans la base de données. Itérer un grand nombre de lignes n'est pas gratuit.


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

Dans mon expérience, le plus gros problème que vous allez rencontrer n'est pas la taille, mais le nombre de requêtes que vous pouvez gérer à la fois. Très probablement, vous allez devoir passer à une configuration maître / esclave pour que les requêtes de lecture puissent s'exécuter contre les esclaves et que les requêtes d'écriture s'exécutent sur le maître. Toutefois, si vous n'êtes pas encore prêt pour cela, vous pouvez toujours modifier vos index pour les requêtes que vous exécutez afin d'accélérer les temps de réponse. De plus, il y a beaucoup de peaufinage que vous pouvez faire sur la pile réseau et le noyau sous Linux.

J'ai eu le mien obtenir jusqu'à 10GB, avec seulement un nombre modéré de connexions et il a traité les demandes très bien.

Je me concentrerais d'abord sur vos index, puis un administrateur de serveur regarderait votre système d'exploitation, et si tout cela ne vous aide pas, il pourrait être temps d'implémenter une configuration maître / esclave.


Surveillez également les jointures complexes. La complexité des transactions peut être un facteur important en plus du volume de transactions.

Le refactoring des requêtes lourdes offre parfois une grande amélioration des performances.


Un point à considérer est également le but du système et les données au jour le jour.

Par exemple, pour un système de surveillance GPS de voitures, il n'est pas pertinent de rechercher des données depuis les positions de la voiture au cours des mois précédents.

Par conséquent, les données peuvent être transmises à d'autres tables historiques pour une consultation éventuelle et réduire les temps d'exécution des requêtes quotidiennes.


Une fois, j'ai été appelé à regarder un mysql qui avait «cessé de fonctionner». J'ai découvert que les fichiers DB résidaient sur un filer Network Appliance monté avec NFS2 et avec une taille de fichier maximale de 2 Go. Et bien sûr, la table qui avait cessé d'accepter les transactions était exactement de 2 Go sur le disque. Mais en ce qui concerne la courbe de performance, on me dit que ça fonctionnait comme un champion jusqu'à ce que ça ne marche pas du tout! Cette expérience me sert toujours de bon souvenir: il y a toujours des dimensions au-dessus et au-dessous de celle que vous soupçonnez naturellement.







database-performance