停止在你的数据库中使用UUID
创作时间:
作者:
@小白创作中心
停止在你的数据库中使用UUID
引用
CSDN
1.
https://blog.csdn.net/qq449245884/article/details/139485341
在数据库中唯一标识行的最常见方法之一是使用UUID字段。然而,这种方法带来了需要注意的性能问题。本文将讨论在使用UUID作为数据库表中的键时可能出现的两个性能问题。
什么是UUID?
UUID代表通用唯一标识符(Universally Unique Identifier)。UUID有很多版本,但在本文中,我们将讨论最流行的版本:UUIDv4。
以下是UUIDv4的一个示例:
问题1 —— 插入性能
当向表中插入新记录时,必须更新与主键相关的索引以保持最佳查询性能。索引是使用B+树数据结构构建的。
对于UUIDv4来说,重新平衡过程变得非常低效。这是因为UUID的固有随机性,使得保持树的平衡变得更加困难。当你的数据规模扩大时,需要重新平衡数百万个节点,这显著降低了使用UUID键的插入性能。
问题2 —— 更高的存储需求
我们考虑一个带有自动递增整数键的UUID的大小:
- 自动递增整数每个值消耗32位,而UUID每个值消耗128位。
- 每行UUID的存储空间是整数的4倍。
- 此外,大多数人以人类可读的形式存储UUID,这意味着UUID每个值可能消耗多达688位。这是整数的约20倍。
让我们通过模拟一个现实的数据库来评估UUID如何实际影响存储。我们将使用Josh Tried Coding的示例表:
这个示例使用了Neon PostgreSQL数据库。
- 表1将包含100万行UUID。
- 表2将包含100万行自动递增整数。
以下是结果,让我们逐一分析每个统计数据:
总表大小:考虑到两个表的大小,UUID表大约是整数表的2.3倍!
ID字段大小:单个UUID字段需要比等效整数字段多9.3倍的存储空间!
ID列大小:排除每个表中的其他属性时,UUID和整数列之间的大小差异为3.5倍!
结论
UUID是确保表中记录唯一性的好方法。然而,这些问题在大规模使用时尤为明显,因此对于大多数人来说,UUID实际上不会导致明显的性能下降。尽管这些问题在大规模使用时普遍存在,但重要的是要了解在表中使用UUID的影响,并确保数据库设计的优化。
热门推荐
江西傩舞:古老艺术的现代传承
如何从心理学角度理解股市行为
探秘美式咖啡:二战起源到全球风靡的秘诀
鹧鸪天苏轼:词人的情怀与自然风景的交融
如何通俗的解释计算机是如何实现1+1=2计算的
四大天王:道教与佛教的守护神
网络设备中的光模块种类大全:从1G到800G,一文读懂!
修仙家族模拟器2手游名人玩法最详细介绍!
国产汽车发动机参数从不输,实战从没赢,真实的水平到底啥样?
三文鱼刺身的正确吃法
高海拔对呼吸系统健康的影响及适应性措施
基于基因编辑的脑机接口增强技术取得新进展
川味诱惑:秘制麻婆豆腐的艺术之旅
纤维肌痛症真是「公主病」?全身肌肉、皮肤痛 症状、原因一覽
咳嗽吃什么药、什么程度该上医院?看完这篇就都明白了!
50人诈骗团伙利用“美女主播”设桃色陷阱,涉案1317万全部获刑
复旦大学附属眼耳鼻喉科医院信息化建设实践
0-3岁宝宝营养补充表:维生素D、钙、铁、锌、DHA怎么补?
太行一号旅游公路详细路线与自驾攻略
冬季火了一种新穿法:叫“上面大衣,下面裙子长裤”,适合小个子
NBA全明星前瞻:王鹤棣再战名人赛 新秀赛四队竞争正赛名额
绝句与律诗:诗歌形式的细致对比
2025蛇年春节AI音乐春晚震撼登场,一起见证AI的无限可能
女朋友生气了怎么办?15个实用技巧帮你轻松化解矛盾
机箱风扇最佳的安装方向
旅行达人推荐:三清山到景德镇的必玩之地
云龙公园:城市中的自然与历史瑰宝
辰州傩戏:中国民俗文化的瑰宝
美国交通规则中文版
全能型AI与专业型AI,你怎么选?