2010-11-20 13 views
0

Je construis une application web et ai une compréhension intermidiate de mysql. J'essaie d'envelopper ma tête autour d'un problème que je vois.SQL auto-incrémenter et archiver les anciennes données

mon système peut être utilisé depuis 10 ans. Je suis préoccupé par l'épuisement des valeurs d'incrémentation automatique.

sera-t-il possible d'archiver ou de vider les anciennes données du système pour ouvrir les anciennes valeurs d'incrémentation automatique qui étaient utilisées auparavant?

J'ai lu que l'incrémentation automatique continuera jusqu'à ce qu'il atteigne la valeur maximale pour un int puis jette des erreurs ....?

Je suis à la recherche de toute information sur ce problème. exemple comment d'autres systèmes tels que les systèmes comptables traitent de ces limitations.

J'utilise mon incrememnt auto

Répondre

1

Non, vous ne pouvez pas revenir aux anciens et obsolètes valeurs AutoInc. Pourquoi ne pas définir la colonne correspondante comme BIGINT? De cette façon, votre application pourrait éventuellement fonctionner des décennies sans atteindre une limite. J'ai oublié de vous dire que vous devriez prendre soin du nouveau type dans votre logique d'application (je suppose que c'est PHP). N'utilisez pas d'entiers, utilisez plutôt float.

0

Vous pouvez augmenter votre valeur d'incrément automatique maximale en changeant votre colonne id à quelque chose comme un BIGINT - il prend en charge les numéros jusqu'à 9223372036854775807, vous ne serez jamais besoin de plus. Et non, vous ne pouvez pas libérer les anciennes valeurs d'ID pour les nouvelles entrées avec cet ID.

+0

non signé, il prend en charge jusqu'à 18446744073709551615 –

0

Vous pouvez rester avec int. Vous pouvez utiliser une colonne GUID ou une clé naturelle, mais il n'y a aucune raison d'abandonner les performances de la requête. L'adhésion sur ints sera plus rapide que la jonction des colonnes guid ou des clés composites. Voir les documents here pour une définition des plages de types. Unsigned int ou BIGINT sont de bons paris pour dissiper vos inquiétudes au sujet de manquer de numéros ...

1

unsigned int = 430 millions par an pendant 10 ans

devrait être suffisant pour ne pas utiliser bigint non signé: P