安特·阿斯玛:PostgreSQL中UUID键的意外缺点

安特·阿斯玛:PostgreSQL中UUID键的意外缺点

💡 原文英文,约1600词,阅读约需6分钟。
📝

内容提要

本文介绍了使用UUID作为主键的优缺点,提出了UUID v7方法生成时间戳UUID的方式,并比较了随机UUID和顺序UUID的索引扫描性能。结果表明,使用顺序UUID可以提高缓存命中率。

🎯

关键要点

  • 使用UUID作为主键的优点包括独立生成键和在不同数据库间移动记录时无需重新编号。
  • UUID的缺点是丧失时间局部性,随机生成的UUID导致插入顺序与ID顺序无关。
  • 随机UUID的B树索引在查找时需要保持整个索引在缓存中,而顺序ID索引只需少量最近页面。
  • 创建包含传统整数ID、随机UUID和基于时间戳的UUID(UUID v7)表以比较性能。
  • UUID v4的索引扫描速度较慢,UUID v7的顺序UUID性能更优。
  • 索引仅扫描的性能受可见性映射影响,随机UUID导致额外的缓冲区查找。
  • 数据局部性对性能至关重要,使用顺序UUID(如UUID v7)可以提高缓存命中率。
➡️

继续阅读