Nombre maximum d’enregistrements dans une table de firebase database MySQL

Quelle est la limite supérieure des enregistrements pour la table de firebase database MySQL. Je m’interroge sur le champ d’autoincrement. Que se passerait-il si j’ajoutais des millions d’enregistrements? Comment gérer ce genre de situations? THX!

Les types mysql int peuvent faire plusieurs lignes: http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html

la plus grande valeur de unsigned int est 4,294,967,295
la plus grande valeur de bigint non signée est 18,446,744,073,709,551,615

La plus grande valeur d’un nombre entier a peu à voir avec le nombre maximal de lignes que vous pouvez stocker dans une table.

Il est vrai que si vous utilisez une clé int ou bigint comme clé primaire, vous ne pouvez avoir autant de lignes que le nombre de valeurs uniques dans le type de données de votre clé primaire, mais vous n’avez pas besoin de faire de votre clé primaire un entier , vous pourriez 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 avec une limitation 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 firebase database 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’option --with-big-tables pour la prendre en charge jusqu’à 2 64 lignes par table.

http://dev.mysql.com/doc/refman/5.1/en/innodb-ressortingctions.html

Le moteur de stockage InnoDB ne semble pas avoir de limite quant au nombre de lignes, mais sa taille est limitée à 64 téraoctets. Le nombre de lignes qui s’inscrit dans cette zone dépend de la taille de chaque ligne.

Je suggère, ne jamais supprimer les données. Ne dites pas si les tables sont plus longues que 1000 tronquer la fin de la table. Votre plan doit comporter une véritable logique métier, par exemple, combien de temps cet utilisateur est inactif. Par exemple, si le délai est supérieur à 1 an, placez-le dans un tableau différent. Cela se produirait chaque semaine ou chaque mois dans un script de maintenance au milieu d’un temps lent.

Lorsque vous rencontrez de nombreuses lignes dans votre table, vous devez commencer à partitionner les tables ou les partitions 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. Puis modifiez votre programmation pour travailler avec ce modèle. Peut-être faire un nouveau tableau avec moins d’informations pour résumer les données en moins de colonnes et ensuite seulement faire référence aux plus grandes tables partitionnées lorsque vous avez besoin de plus d’informations, par exemple lorsque l’utilisateur visualise son profil. Tout cela devrait être considéré avec beaucoup de soin, de sorte qu’à l’avenir il ne soit pas trop coûteux de le re-factoriser. Vous pouvez également mettre uniquement les utilisateurs qui arrivent sur votre site dans une seule table et les utilisateurs qui ne sont 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 maximale de la taille des lignes. Cependant, d’autres enregistrements peuvent être ajoutés si la taille de la ligne est plus petite.

Selon la section sur l’évolutivité et les limites de http://dev.mysql.com/doc/refman/5.6/en/features.html , le support de MySQL pour les bases de données volumineuses. Ils utilisent le serveur MySQL 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.

Limites de taille de ligne

 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 consortingbuent que de 9 à 12 octets par rapport à la taille limite des lignes, car leur contenu est stocké séparément du rest de la ligne.

  • La taille maximale des lignes d’une table InnoDB, qui s’applique aux données stockées localement dans une page de firebase database, 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 par défaut de 16 Ko InnoDB, définie par l’option de configuration innodb_page_size. « Limites sur les tables InnoDB ».

  • Si une ligne contenant des colonnes de longueur variable dépasse la taille de ligne maximale d’InnoDB, InnoDB sélectionne des colonnes de longueur variable pour le stockage externe hors-page jusqu’à ce que la ligne corresponde à 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 diffère selon le format de ligne. Pour plus d’informations, voir « Stockage de lignes et formats de lignes InnoDB ».
  • Différents formats de stockage utilisent différentes quantités d’en-tête de page et de données de remorque, ce qui affecte la quantité de stockage disponible pour les lignes.

Lien http://dev.mysql.com/doc/refman/5.7/en/column-count-limit.html

Limites de taille de ligne

La taille maximale des lignes 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 consortingbuent que de 9 à 12 octets par rapport à la taille limite des lignes, car leur contenu est stocké séparément du rest de la ligne.

La taille maximale des lignes d’une table InnoDB, qui s’applique aux données stockées localement dans une page de firebase database, est légèrement inférieure à la moitié d’une page pour les parameters innodb_page_size de 4 Ko, 8 Ko, 16 Ko et 32 ​​Ko. Par exemple, la taille maximale des lignes est légèrement inférieure à 8 Ko pour la taille de page par défaut de 16 Ko InnoDB. Pour les pages de 64 Ko, la taille maximale des lignes est légèrement inférieure à 16 Ko. Voir Section 15.8.8, «Limites sur les tables InnoDB».

Si une ligne contenant des colonnes de longueur variable dépasse la taille de ligne maximale d’InnoDB, InnoDB sélectionne des colonnes de longueur variable pour le stockage externe hors-page jusqu’à ce que la ligne corresponde à 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 diffère selon le format de ligne. Pour plus d’informations, reportez-vous à la Section 15.11, «Stockage de lignes et formats de lignes InnoDB».

Différents formats de stockage utilisent différentes quantités d’en-tête de page et de données de remorque, ce qui affecte la quantité de stockage disponible pour les lignes.

Pour plus d’informations sur les formats de lignes InnoDB, reportez-vous à la Section 15.11, «Stockage de lignes et formats de lignes InnoDB» et à la Section 15.8.3, «Structure de lignes physiques des tables InnoDB».

Pour plus d’informations sur les formats de stockage MyISAM, reportez-vous à la Section 16.2.3, «Formats de stockage des tables MyISAM».

http://dev.mysql.com/doc/refman/5.7/en/innodb-ressortingctions.html

Il n’y a pas de limites. Cela ne dépend que de votre mémoire libre et de la taille maximale du fichier système. Mais cela ne signifie pas que vous ne devriez pas prendre de mesure de précaution pour lutter contre l’utilisation de la mémoire dans votre firebase database. Créez toujours un script capable de supprimer les lignes qui ne sont plus utilisées ou qui conserveront le nombre total de lignes dans un chiffre donné, par exemple un millier.