2010-03-05 18 views
6
benim programlamada günlük kullanılarak

rağmen, ancak bu soru hakkında hiç fark:mysql'de int veri türü kayıt eklerken limite ulaşırsa ne olur?

beri oto artışı ve bir sabah olmasını INT alanları bildirirseniz aslında ne olur 0 to 4294967295 değerleri tutabilir int(unsigned) veri türü, bu 4294967295 ulaşır? Açık cevap, daha fazla eklenemeyen bir hata atmalı, ancak veriler asla durmaz ve hala devam eden kayıtları saklamamız gerekir. Bu durumda ne yapmalı?

Ayrıca int (20) bu varsayılan sınırdan yeterince büyük olacağını bildiriyor?

Herhangi bir öneriniz var mı?

Teşekkürler.

+2

20 - aralık 0'dır. Büyük tamsayılar için BIGINT kullanın. –

cevap

3

4 milyar satır alırsanız, alanın taşması muhtemelen sorunlarınızdan en azıdır.

8 bayt kapasiteli BIGINT olarak bildirebilirsiniz. Bir satır bu numara ile varsa bir hata dönen, bunun 0'a geri döner aşarsa ya 18446744073709551615.

kadar saymak ve sokulmasına devam edeceğini Anlamı.

+1

Milyarlarca kaydı olan büyük veritabanlarının stratejisini bilmek istiyorum. Galiba GUID veya UUID bir seçim olur mu? – JPro

+1

Otomatik olarak doldurulmuş bigint, emin olmak istediğinizde devam etmektir. 18 quintillion satırını doldurmak, bir işi sürekli olarak yapan bir bilgisayarla bile biraz zaman alacak. Tüketeceği alandan bahsetmiyorum. Bu kadar çok kaydı olan bir uygulama olduğunu düşünmüyorum. Belki de kötü yapılandırılmış bir DNA veritabanıdır, ama bu kadar aptalca olduklarından şüphe ederim. –

0

Kullanım BIGINT - bu sadece dolgu için kullanılan, veri türü değişmez 18446744073709551615