2017-05-12 8 views
1

Für eine Website wie Facebook, verwendet es int oder varchar? Zum Beispiel gibt es für die Anzahl der Posts auf Facebook Milliarden oder Billionen. Verwenden Sie also int für jede Post-ID oder verwenden Sie varchar? Das Maximum für int ist 2.147.483.647, also bin ich verwirrt. Bitte helfen Sie, danke.Varchar oder int für viele Datensätze?

+2

'BIGINT' kann 18.446.744.073.709.551.615 Werte verarbeiten, aber die Sequenzgenerierung [zB: auto-increment] ist eine große Barriere für die Parallelisierung, so dass sie wahrscheinlich UUIDs oder etwas ähnliches verwenden. – Sammitch

+0

@Sammitch Entschuldigung, was meinst du? Ich verstehe nicht wirklich –

+1

Ich zitiere [diese Antwort auf Stack] (http://Stackoverflow.com/a/4638170/1415724): * "... in MySQL, Max Wert für BigInt ist 18.446.744.073.709.551.615. Also, wenn Sie 100 Millionen einfügen Reihen pro Sekunde, dauert es 5849 Jahre, bevor Sie keine Zahlen mehr haben. "* –

Antwort

3

es gibt auch einen BIGINT.

Der unterzeichnete Bereich -9223372036854775808 zu 9223372036854775807.

Der unsigned Bereich 0 bis 18446744073709551615.

Das ist mehr als genug :)

+0

Was ist mit Benutzer-ID? denkst du, dass es "int" sein kann? –

+0

@JasonBale nur für eine gewisse Zeit. Oder später können Sie Situation mit PSY Gangnam Style Videoclip bekommen. Google sagte, dass sie nie gedacht hätten, dass irgendein Video so viele Ansichten erreichen könnte. – Rulisp

3

Wie @Sammitch erwähnt, UUID einen langen Wert erzeugen kann Das hat einen viel größeren Bereich als ein 32-Bit-Int. UUID generiert einen 128-Bit-Wert.

Bedenken Sie auch, dass ein Primärschlüssel ein zusammengesetzter Primärschlüssel sein kann, so dass Sie die Anzahl der Möglichkeiten stark erweitern können.

Sie haben nach der Benutzer-ID gefragt. Ich beriet mich für eine Website, deren Werte für ihre signierte 32-Bit-INT-Benutzer-ID nicht mehr ausreichten. Der Grund war, dass sie aufgrund eines Fehlers 1000 oder mehr Werte für jeden neu erstellten Benutzer übersprungen haben. Sie hatten also viel schneller keine Werte mehr, als wenn sie die Benutzer-IDs 1 auf einmal erhöht hätten.

Ich half ihnen Upgrade ihrer Benutzer-ID auf BIGINT. Wir mussten dies in der Benutzertabelle und in ungefähr 30 anderen Tabellen tun, die die Benutzertabelle referenzierten (weil es nicht gut wäre, größere Werte für Benutzer-ID zuzulassen, wenn die anderen Tabellen noch INT verwenden und die größeren Werte nicht referenzieren können). .

Siehe auch meine Antwort auf Integer overflow what will be next.

+0

das ist eine perfekte Erklärung. Danke für das reale Beispiel! +1 –

Verwandte Themen