2009-08-07 16 views
2

Je me demande à quel moment ma table MySQL sera considérée trop grande.Quelle est la taille maximale de la table SQL

Le tableau est le suivant:

  • id
  • customer_id (int)
  • valeur
  • (float)
  • timestamp_1 (datetime)
  • tmestampt_2 (datetime)

donc la taille de la rangée n'est pas trop grande, mais serait constamment ajoutée. À mon avis, je regarde environ 17 000 nouvelles files par jour, soit environ 500 000 par mois. Les données sont susceptibles d'être interrogées assez constamment en grandes quantités.

Dois-je chercher des moyens de scinder ce problème ou suis-je encore OK à ce stade?

Merci,

+0

Difficile de répondre. Vous pouvez avoir des centaines de millions de lignes dans une table et cela peut être rapide. Tout dépend des requêtes que vous lancez dans votre direction. – nos

Répondre

5

De http://dev.mysql.com/doc/refman/5.0/en/full-table.html:

La taille de la table maximale efficace pour les bases de données MySQL est généralement déterminée par des contraintes d'exploitation du système sur la taille des fichiers, et non par des limites internes MySQL.

De la table dans l'article lié, sur les systèmes FAT/FAT32 et Linux pré 2.4, la taille maximale du fichier est de 2-4 Go, sur tous les autres systèmes énumérés, la taille du fichier max est au moins 2 To.

Tant que vous indexez votre table correctement, il ne devrait pas y avoir trop de ralentissement lorsque votre table grandit. Cependant, si votre table se développe au point que vous remarquez un ralentissement, vous pouvez archiver périodiquement les anciens enregistrements.

1

Il serait trop grand lorsque votre requête commence à ralentir.

Avez-vous besoin de conserver l'historique complet dans ce tableau ou recherchez-vous toujours les dernières valeurs? Vous pouvez optimiser les choses en archivant les enregistrements dont vous n'avez pas besoin sur une table d'archivage. À part cela, faites attention à la façon dont vous planifiez vos index. Si vous placez des index partout, les insertions peuvent prendre plus de temps. Si vous n'avez aucun index mais que vous devez trier et filtrer, la récupération peut être trop lente.

2

Qu'est-ce que "Too big" va vraiment dépendre de la taille de votre matériel. MySQL lui-même ne devrait avoir aucun problème à gérer des millions de lignes dans une table.

Néanmoins, je penserais à le diviser pour obtenir les meilleures performances possibles. Exactement comment vous faites cela dépend de la façon dont les données sont utilisées. Les données plus récentes sont-elles utilisées beaucoup plus fréquemment? Si c'est le cas, créez une table d'archivage avec la même structure pour stocker les anciennes données et déplacer périodiquement les données de votre table principale vers la table d'archivage. Cela augmenterait la complexité de votre application, mais pourrait vous donner de meilleures performances à long terme.

1

Dans MyISAM, la taille de la table théorique est limitée par la taille du pointeur de données, définie par myisam_data_pointer_size.

Il peut être de 2 à 7 octets, ce qui rend la taille de la table peut être de 2^(8 * 2) = 65k à 2^(8 * 7) = 64P octets. Par défaut, il s'agit de 6 bytes (256T).

Bien sûr, étant donné que les tables MyISAM sont conservées dans un fichier, la taille maximale du fichier est soumise à la contrainte du OS et du système de fichiers.

Un InnoDB tablespace peut consister en autant que 2^32 pages, ce qui est 4G pages de 16K octets chacun, ou 64T octets au maximum.

Questions connexes