暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

uuid vs 自增id

原创 idleman 2020-09-11
1027
  • uuid容量更大(16字节),相同数据块中容纳的数据行/tuple更少——影响较少,每行数据多8字节相较于几十上百个个varchar字段的表来讲,影响有限,但主键索引会增大;
  • uuid因为随机性不支持排序查找,如 id between 100 and 200;
  • uuid的随机性,会导致查询、insert可能不能合理的使用内存中缓存的热块——大多数相邻数据位于同一数据块或相邻数据块;
  • uuid的随机性,会导致B树维护空间更多——随机性导致的树高度增加;

B树上大部分的操作所需要的磁盘存取次数和B树的高度是成正比的,在B树中可以检查多个子结点,由于在一棵树中检查任意一个结点都需要一次磁盘访问,所以B树避免了大量的磁盘访问。

当分裂导致B树索引的层数(Btree Level)增加时,我们称之为树的“生长”。当叶子节点分裂时,在其父节点上需要增加一条记录指向新节点,如果此时父节点上没有足够空间,则父节点也会发生分裂,如果如此递归下去,直到根节点也分裂,那么索引的高度就增加了。

UUID V1能极大地提高id的有序性,若必须使用uuid时考虑V1版本UUID(放弃安全性,仅使用其唯一性、有限随机性)。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论