Wir erwägen, UUID-Werte als Primärschlüssel für unsere MySQL-Datenbank zu verwenden. Die eingefügten Daten werden von Dutzenden, Hunderten oder sogar Tausenden von Remotecomputern generiert und mit einer Rate von 100-40.000 Einfügungen pro Sekunde eingefügt. Wir werden niemals Aktualisierungen vornehmen.
Die Datenbank selbst erreicht normalerweise etwa 50 Millionen Datensätze, bevor wir mit dem Auslesen von Daten beginnen. Es handelt sich also nicht um eine massive Datenbank, sondern auch nicht um eine winzige. Wir planen auch, auf InnoDB zu laufen, obwohl wir offen dafür sind, dies zu ändern, wenn es eine bessere Engine für das gibt, was wir tun.
Wir waren bereit, mit Javas Typ 4-UUID zu arbeiten, haben aber beim Testen ein seltsames Verhalten festgestellt. Zum einen speichern wir als varchar (36) und mir ist jetzt klar, dass wir besser mit binär (16) umgehen können - obwohl ich nicht sicher bin, wie viel besser es uns geht.
Die größere Frage ist: Wie stark vermasseln diese zufälligen Daten den Index, wenn wir 50 Millionen Datensätze haben? Wären wir besser dran, wenn wir zum Beispiel eine UUID vom Typ 1 verwenden würden, bei der die Bits ganz links mit einem Zeitstempel versehen wären? Oder sollten wir UUIDs komplett weglassen und Auto_Increment-Primärschlüssel in Betracht ziehen?
Ich suche nach allgemeinen Gedanken / Tipps zur Leistung verschiedener Arten von UUIDs, wenn diese als Index / Primärschlüssel in MySQL gespeichert sind. Vielen Dank!