Quelle est la limite supérieure d'enregistrements pour la table de base de données MySQL. Je m'interroge sur le champ d'auto-incrémentation. Que se passerait-il si j'ajoutais des millions d'enregistrements? Comment gérer ce genre de situations? THX!
Quelle est la limite supérieure d'enregistrements pour la table de base de données MySQL. Je m'interroge sur le champ d'auto-incrémentation. Que se passerait-il si j'ajoutais des millions d'enregistrements? Comment gérer ce genre de situations? THX!
Réponses:
Les types mysql int peuvent faire pas mal de lignes: http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html
la int
plus grande valeur 4,294,967,295
non signée est la bigint
plus grande valeur non signée est18,446,744,073,709,551,615
La plus grande valeur d'un entier a peu à voir avec le nombre maximum de lignes que vous pouvez stocker dans une table.
Il est vrai que si vous utilisez un int ou bigint comme clé primaire, vous ne pouvez avoir que le nombre de lignes que le nombre de valeurs uniques dans le type de données de votre clé primaire, mais vous n'avez pas à faire de votre clé primaire un entier , vous pouvez en faire un CHAR (100). Vous pouvez également déclarer la clé primaire sur plusieurs colonnes.
Il existe d'autres contraintes sur la taille de la table en plus du nombre de lignes. Par exemple, vous pouvez utiliser un système d'exploitation qui a une limite de taille de fichier. Ou vous pourriez avoir un disque dur de 300 Go qui ne peut stocker que 300 millions de lignes si chaque ligne a une taille de 1 Ko.
Les limites de la taille de la base de données sont vraiment élevées:
http://dev.mysql.com/doc/refman/5.1/en/source-configuration-options.html
Le moteur de stockage MyISAM prend en charge 2 à 32 lignes par table, mais vous pouvez créer MySQL avec l' --with-big-tables
option de le faire prendre en charge jusqu'à 2 à 64 lignes par table.
http://dev.mysql.com/doc/refman/5.1/en/innodb-restrictions.html
Le moteur de stockage InnoDB ne semble pas avoir de limite sur le nombre de lignes, mais il a une limite de taille de table de 64 téraoctets. Le nombre de lignes dans celui-ci dépend de la taille de chaque ligne.
Je suggère de ne jamais supprimer les données. Ne dites pas si les tables sont plus longues que 1000 tronquer la fin de la table. Il doit y avoir une véritable logique métier dans votre plan, par exemple depuis combien de temps cet utilisateur est-il inactif. Par exemple, si elle dure plus d'un an, mettez-les dans un autre tableau. Cela se produirait chaque semaine ou chaque mois dans un script de maintenance au milieu d'une période de ralentissement.
Lorsque vous rencontrez de nombreuses lignes dans votre table, vous devez commencer à partager les tables ou à partitionner et à placer les anciennes données dans les anciennes tables par année, telles que users_2011_jan, users_2011_feb ou utiliser des nombres pour le mois. Modifiez ensuite votre programmation pour qu'elle fonctionne avec ce modèle. Peut-être créer une nouvelle table avec moins d'informations pour résumer les données dans moins de colonnes, puis ne faire référence aux tables partitionnées plus grandes que lorsque vous avez besoin de plus d'informations, par exemple lorsque l'utilisateur consulte son profil. Tout cela doit être considéré très attentivement afin qu'à l'avenir, il ne soit pas trop coûteux à re-factoriser. Vous pouvez également mettre uniquement les utilisateurs qui viennent sur votre site tout le temps dans une table et les utilisateurs qui ne viennent jamais dans un ensemble de tables archivées.
Dans InnoDB, avec une limite de taille de table de 64 téraoctets et une limite de taille de ligne MySQL de 65 535, il peut y avoir 1 073 741 824 lignes. Ce serait le nombre minimum d'enregistrements utilisant la limite de taille de ligne maximale. Cependant, plus d'enregistrements peuvent être ajoutés si la taille de ligne est plus petite.
Selon la section Évolutivité et limites de http://dev.mysql.com/doc/refman/5.6/en/features.html , prise en charge de MySQL pour les grandes bases de données. Ils utilisent MySQL Server avec des bases de données contenant 50 millions d'enregistrements. Certains utilisateurs utilisent MySQL Server avec 200 000 tables et environ 5 000 000 000 de lignes.
The maximum row size for a given table is determined by several factors:
La représentation interne d'une table MySQL a une limite de taille de ligne maximale de 65 535 octets, même si le moteur de stockage est capable de prendre en charge des lignes plus grandes. Les colonnes BLOB et TEXT ne contribuent que de 9 à 12 octets à la limite de taille de ligne car leur contenu est stocké séparément du reste de la ligne.
La taille de ligne maximale d'une table InnoDB, qui s'applique aux données stockées localement dans une page de base de données, est légèrement inférieure à une demi-page. Par exemple, la taille de ligne maximale est légèrement inférieure à 8 Ko pour la taille de page InnoDB par défaut de 16 Ko, qui est définie par l'option de configuration innodb_page_size. " Limites des tables InnoDB ».
Lien http://dev.mysql.com/doc/refman/5.7/en/column-count-limit.html
Limites de taille de ligne
La taille de ligne maximale pour une table donnée est déterminée par plusieurs facteurs:
La représentation interne d'une table MySQL a une limite de taille de ligne maximale de 65 535 octets, même si le moteur de stockage est capable de prendre en charge des lignes plus grandes. Les colonnes BLOB et TEXT ne contribuent que de 9 à 12 octets à la limite de taille de ligne car leur contenu est stocké séparément du reste de la ligne.
La taille de ligne maximale pour une table InnoDB, qui s'applique aux données stockées localement dans une page de base de données, est légèrement inférieure à une demi-page pour les paramètres de 4 Ko, 8 Ko, 16 Ko et 32 Ko innodb_page_size. Par exemple, la taille de ligne maximale est légèrement inférieure à 8 Ko pour la taille de page InnoDB par défaut de 16 Ko. Pour les pages de 64 Ko, la taille de ligne maximale est légèrement inférieure à 16 Ko. Voir Section 15.8.8, «Limites des tables InnoDB».
Si une ligne contenant des colonnes de longueur variable dépasse la taille de ligne maximale InnoDB, InnoDB sélectionne des colonnes de longueur variable pour le stockage externe hors page jusqu'à ce que la ligne rentre dans la limite de taille de ligne InnoDB. La quantité de données stockées localement pour les colonnes de longueur variable stockées hors page varie selon le format de ligne. Pour plus d'informations, reportez-vous à la Section 15.11, «Stockage de lignes InnoDB et formats de lignes».
Différents formats de stockage utilisent différentes quantités de données d'en-tête et de fin de page, ce qui affecte la quantité de stockage disponible pour les lignes.
Pour plus d'informations sur les formats de lignes InnoDB, voir Section 15.11, «Stockage de lignes InnoDB et formats de lignes», et Section 15.8.3, «Structure physique des lignes des tables InnoDB».
Pour plus d'informations sur les formats de stockage MyISAM, reportez-vous à la Section 16.2.3, «Formats de stockage de table MyISAM».
http://dev.mysql.com/doc/refman/5.7/en/innodb-restrictions.html
Il n'y a pas de limites. Cela dépend uniquement de votre mémoire libre et de la taille de fichier maximale du système. Mais cela ne signifie pas que vous ne devez pas prendre de mesures de précaution pour lutter contre l'utilisation de la mémoire dans votre base de données. Créez toujours un script qui peut supprimer les lignes qui ne sont pas utilisées ou qui gardera le nombre total de lignes dans un chiffre particulier, disons mille.