Czy UUID jako klucz podstawowy w PostgreSQL daje złą wydajność indeksu?

Stworzyłem aplikację w Railsach na Heroku, używając bazy danych PostgreSQL.

Ma kilka tabel zaprojektowanych w celu umożliwienia synchronizacji z urządzeniami mobilnymi, gdzie dane mogą być tworzone w różnych miejscach. Dlatego mam pole uuid, które jest łańcuchem przechowującym identyfikator GUID oprócz automatycznego przyrostu klucza podstawowego. Uuid to ten, który jest komunikowany między serwerem a klientami.

Po wdrożeniu mechanizmu synchronizacji po stronie serwera zdałem sobie sprawę, że prowadzi to do problemów z wydajnością, gdy trzeba ciągle mapować między identyfikatorem uuid <-> id (podczas pisania obiektów, muszę zapytać uuid, aby uzyskać identyfikator przed zapisaniem i odwrotnie podczas wysyłania danych z powrotem).

Zastanawiam się teraz nad przejściem na UUID jako klucz podstawowy, dzięki czemu pisanie i czytanie będzie znacznie prostsze i szybsze.

Przeczytałem, że UUID jako klucz podstawowy może czasami powodować złą wydajność indeksu (fragmentacja indeksu) podczas używania klastrowanego indeksu klucza podstawowego. Czy PostgreSQL cierpi na ten problem, czy może używać UUID jako klucza podstawowego?

Mam już dzisiaj kolumnę UUID, więc jeśli chodzi o przechowywanie, będzie lepiej, ponieważ upuszczam kolumnę zwykłego identyfikatora.

questionAnswers(2)

yourAnswerToTheQuestion