Nie próbuję ponownie uruchomić debugowania klucza UUID w porównaniu z kluczem szeregowym. Wiem, że istnieją ważne punkty po obu stronach. Używam identyfikatorów UUID jako klucza podstawowego w kilku moich tabelach.PostgreSQL Wydajność typu UUID
- Typ kolumny:
"uuidKey" text NOT NULL
- Index:
CREATE UNIQUE INDEX grand_pkey ON grand USING btree ("uuidKey")
- klucz podstawowy:
ADD CONSTRAINT grand_pkey PRIMARY KEY ("uuidKey");
Oto moje pierwsze pytanie; z PostgreSQL 9.4 czy jest jakaś wydajność przy ustawianiu typu kolumny na UUID?
W dokumentacji http://www.postgresql.org/docs/9.4/static/datatype-uuid.html opisano UUID, ale czy istnieją jakieś korzyści oprócz bezpieczeństwa typu przy stosowaniu tego typu zamiast typu text
? W dokumentacji typów znaków oznacza, że char(n)
nie ma żadnej przewagi nad text
w PostgreSQL.
Wskazówka: Nie ma różnicy wydajności między tymi trzema typami, oprócz ze zwiększonej przestrzeni dyskowej przy użyciu typu pusty wyściełane i kilka cykli CPU dodatkowo sprawdzić długość podczas przechowywania w wzdłużnych ograniczona kolumna. Chociaż character (n) ma zalety w niektórych innych systemach baz danych, nie ma takiej korzyści w PostgreSQL; w rzeczywistości charakter (n) jest zwykle najwolniejszy z trzech następujących ze względu na dodatkowe koszty przechowywania. W większości przypadków należy użyć tekstu lub zmiennej znaków.
Nie martwię się o miejsce na dysku. Zastanawiam się tylko, czy warto porównywać UUID do kolumn z tekstem?
Drugie pytanie, hash vs indeksy b-tree. Nie ma sensu sortowanie kluczy UUID, więc czy b-drzewo ma jakieś inne zalety w stosunku do indeksu hash?
Jeśli tworzysz unikalny indeks oprócz klucza podstawowego, nie jest to konieczne. Po ustawieniu klucza podstawowego tworzony jest unikalny indeks na kluczu. –
Mogłem pokazać to w niewłaściwej kolejności. Indeks został utworzony automagicznie przez ograniczenie klucza głównego. – adamek
Wydaje się również, że zgodnie z dokumentami (w czasie tego komentarza 9.4 jest najnowszą stabilną wersją), odradza się używanie indeksów hash: http://www.postgresql.org/docs/9.4/static/indexes -types.html –