J'ai une base de données qui est rapidement remplie de données dont nous parlons de 10 à 20 000 lignes par jour.
Quelle est la limite d'une identification avec option d'auto-incrémentation? Si l'ID est créé en tant que INTEGER, puis-je faire une valeur maximale de 2 147 483 647 pour les valeurs non signées?
Mais que se passe-t-il lorsque l'auto-incrémentation va au-dessus de cela? Est-ce que tout s'effondre? Quelle serait alors la solution?
Je suis sûr que beaucoup de gens ont de grosses bases de données et j'aimerais les entendre.
Merci.
Si vous craignez qu'il ne se développe trop rapidement hors des limites, je définirais le PK comme UN BIGINT NON SIGNÉ. Cela vous donne une valeur maximale de 18446744073709551615, ce qui devrait être suffisant.
| Min. (inclusive) | Max. (inclusive)
-----------------------------------------------------------------------------
INT Signed (+|-) | -2,147,483,648 | +2,147,483,647
-----------------------------------------------------------------------------
INT Unsigned (+) | 0 | 4,294,967,295
-----------------------------------------------------------------------------
BIGINT Signed (+|-) | -9,223,372,036,854,775,807 | +9,223,372,036,854,775,806
-----------------------------------------------------------------------------
BIGINT Unsigned (+) | 0 | 18,446,744,073,709,551,615
Si vous avez une table mysql avec l'ID de colonne (INT non signé) et que la table a 4 294 967 295 enregistrements, alors vous essayez d'insérer 1 autre enregistrement, l'ID du nouvel enregistrement sera automatiquement modifié et défini au maximum qui est "4 294 967 295", vous obtenez donc un message d'erreur MySQL Duplicate entry '4294967295' for key 'PRIMARY'
, vous aurez des ID en double si la colonne est définie comme clé primaire.
2 Solutions possibles: