Postgres UUID引用开销

时间:2013-08-22 12:33:12

标签: sql postgresql

考虑这个用于存储对象元数据的表

CREATE TABLE meta (
  "obj_uuid"  uuid,
  "type"      int,
  "value"     text
);

使用uuid作为主键标识对象,元数据行引用uuid。现在我担心这会以指数方式夸大数据库大小。

Postgres是否会对此进行优化,或者创建一个将uuid映射到serial并在元数据表中引用此序列的中间表会更好吗?

1 个答案:

答案 0 :(得分:3)

  

现在我担心这会以指数方式炸掉数据库大小

与64位bigint或32位integer相比,uuid仅为128位。因此,最坏情况下的开销是密钥空间的4倍。

如果您的键/值配对非常小并且有很多这些配对可能会引起关注。在这种情况下,我会使用基于integer的{​​{1}}或biginteger密钥,然后只使用sequence作为未在参考中出现的唯一辅助密钥诚信检查。