首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对于整型的主键,为什么避免间隙很重要?

对于整型的主键,为什么避免间隙很重要?
EN

Stack Overflow用户
提问于 2010-03-29 10:27:46
回答 3查看 161关注 0票数 0

我正在为一个表生成一个代理键&由于我的hi/lo算法,每次您重新启动/重新启动机器时,可能会出现间隙。

代码语言:javascript
复制
T1: current hi = 10000000 
    (sequence being dished out .. 1 to 100)
       Assume that current sequence is 10000050

T2: restart system.

T3: System gives out the next_hi as 10000100 
    (sequence being dished out now ranges from 101 to 200)

T4: Next request for a key returns 100001001

从主键或索引内部的角度来看,为什么序列中没有间隙很重要?我问这个是为了更深入地理解mysql。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-03-29 10:32:58

从主键或索引内部的角度来看,为什么序列中没有间隙是很重要的?

这并不重要--是什么让你相信它?

对于主键,最重要的是它对于表中的所有数据都是唯一的。无论值是什么,或者前后的记录是否为顺序值,都不重要。

票数 4
EN

Stack Overflow用户

发布于 2010-03-29 10:31:57

为什么序列中没有间隙是很重要的

这并不重要。间隙很好。出于性能原因,可以容忍间隙。

有用的是保证具有严格递增的序列(即,该序列具有与行创建时间相同的顺序)。但即使在集群配置中也不能保证这一点(使用本地计数器缓存)。

票数 2
EN

Stack Overflow用户

发布于 2010-03-29 14:51:47

谁告诉你的?代理键没有任何意义,所以不能有任何间隙。没有意义的东西中的间隙是什么?我们使用UUID作为密钥,类似于: 6ba7b812-9dad-11d1-80b4-00c04fd430c8。“下一个”关键字是什么?没人知道,也没人关心。只要它是独一无二的,就没问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2535483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档