Postgresql

UUID 或 BIGSERIAL 外鍵 Postgres

  • September 17, 2021

我有 8 個使用 UUID 主鍵的表,其中 7 個具有 UUID 外鍵。使用 BIGSERIAL 而不是 UUID 會更好地提高性能嗎?

uuid如果需要,請使用。

如果不使用,請不要使用它。

bigint在多種方面更小更快。8 字節和 16 字節聽起來並不多,但是對於大表和多個實例以及每個實例的多個索引來說,差異會累積起來。(對於小表來說,auuidbigintkey 很少有意義。)

bigint當數字畢竟沒有那麼大時,通常在人眼和人工處理和表示方面也更容易。UUID 始終需要 32 個字元的表示形式(可選加上破折號)。

如果您在同一個表中有兩個(PK 和 FK),則行將增長 16 個字節。這可能對窄行產生影響,或者對於寬行可以忽略不計。更重要的是,關聯索引的大小也在增長。雖然 a 的 PK 索引bigint每行佔用 16 個字節(包括 8 字節索引元組成本),但uuid. 如果 RAM 沒有大量可用,這可能意味著駐留在 RAM 中的多個索引與被逐出並重複從儲存中讀回的差異。這將是一個巨大的差異。

你還需要bigint嗎?通常,4 字節integer就足夠了(如果它真的足夠好的話)……

有關的:

引用自:https://dba.stackexchange.com/questions/256749