PostgreSQL-UUID-Typ-Leistung

8

Ich versuche nicht, die UUID vs serielle Integer-Schlüssel-Debatte neu zu starten. Ich weiß, dass es zu beiden Seiten gültige Punkte gibt. Ich verwende UUIDs als Primärschlüssel in mehreren meiner Tabellen.

  • Spaltentyp: "uuidKey" text NOT NULL
  • Index: CREATE UNIQUE INDEX grand_pkey ON grand USING btree ("uuidKey")
  • Beschränkung der Primärschlüssel: ADD CONSTRAINT grand_pkey PRIMARY KEY ("uuidKey");

Hier ist meine erste Frage; Mit PostgreSQL 9.4 gibt es einen Leistungsvorteil beim Festlegen des Spaltentyps auf UUID?

Die Dokumentation Ссылка beschreibt die UUIDs, aber gibt es einen gewissen Nutzen neben der Typensicherheit um diesen Typ anstelle von text type zu verwenden? In der Dokumentation der Zeichentypen wird angezeigt, dass char(n) keinen Vorteil gegenüber text in PostgreSQL hat.

  

Tipp: Unter diesen drei Typen gibt es keinen Leistungsunterschied   von erhöhtem Speicherplatz, wenn der Typ mit leerer Aufschrift verwendet wird, und a   einige zusätzliche CPU-Zyklen, um die Länge beim Speichern in einem zu überprüfen   Länge eingeschränkte Spalte. Während Charakter (n) Leistung hat   Vorteile in einigen anderen Datenbanksystemen gibt es keinen solchen Vorteil   in PostgreSQL; Tatsächlich ist Charakter (n) normalerweise der langsamste der   drei wegen seiner zusätzlichen Lagerkosten. In den meisten Situationen Text   oder Zeichenvariation sollte stattdessen verwendet werden.

Ich mache mir keine Gedanken über Speicherplatz, ich frage mich nur, ob es sich lohnt, Benchmarks für UUID und Textspalten zu vergleichen?

Zweite Frage, Hash-vs-B-Baum-Indizes. Es ist sinnlos, UUID-Schlüssel zu sortieren, also hätte b-tree andere Vorteile als der Hash-Index?

    
adamek 26.04.2015, 16:10
quelle

1 Antwort

14

A UUID ist ein 16-Byte-Wert. Dasselbe wie text ist ein 32-Byte-Wert. Die Speichergrößen sind:

%Vor%

Kleinere Tabellen führen zu schnelleren Operationen.

    
Clodoaldo Neto 26.04.2015, 20:11
quelle

Tags und Links