雪花算法面试题总结

问:怎么做到这个ID唯一呢?
答:可以使用雪花算法。
问:介绍一下雪花算法?
答:这个算法是分布式系统中生成唯一ID的算法,效率非常高,一般有64位二进制组成,第一位固定是0接下来的四十一位是时间戳,精确到毫秒,所以非常依赖机器的时间,然后10位是机器ID,支持1024个机器的编号;最后12位是序列号,支持每毫秒最多可以生成4096个不重复的序列号。最后是占用空间大小,8个bit位是1个byte,64位就是8个字节。就是一个长整形数字。
问:与自增生成的ID有什么区别?
答:1,存储空间大,查询效率较低。
2,适用于分布式系统,如果使用分库分表使用自增ID不能保证唯一性。
问:为什么查询效率比较低?
答:首先说mysql的索引结构,他是是一个B+树结构。要讲明白什么是B+树?
首先从最简单的二叉平衡树,说起,其父节点只有两个子节点,每次从硬盘取出一个,跟现有的ID比对,不同的话重新取,效率算不上高,当然比线型数组还是要搞的多。
于是就有了B数,B树有个名称叫做多路平衡查找树,听名字就比二叉树药快,B树的特点是一个节点存放不只一个元素,而且一个父节点有多个子节点,还有一些其他特性,那么它每次可以取多个数据加载到内存与现有的ID比较,命中的概率大大提升。
那为什么又有了B+树呢?B树有一个缺陷是每个节点有存放所有的数据,导致的问题就是每个节点存放的数据数量较少。而B+树在所有的叶子节点以外的节点里面只存放索引不存放数据,与之配合的是,其叶子结点包含所有的数据。于是再查询索引时,每次只讲所有索引加载到内存,所能查询的数量大大增加,命中的概率也大大增加。
所以我理解的就是查询效率跟每次查询的数据的数量成正比,占用空间大,每次查询的数量就少,效率就慢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lx18854869896

和谐社会靠你了,老铁...

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值