加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

数据库分库分表后,带来的这个难题,如何解决?

发布时间:2020-08-17 01:20:27 所属栏目:编程 来源:网络整理
导读:在此之前我们先容了数据库的分库分表题目,分库分表可以给我们带来很是好的扩展性与机能上的晋升,但也随之带来一些题目,譬喻数据的主键ID分派题目。我们以Mysql为例,凡是我们行使的是数据库的自增主键,我们在分表的时辰也只管担保营业上不必要跨表查询

在此之前我们先容了数据库的分库分表题目,分库分表可以给我们带来很是好的扩展性与机能上的晋升,但也随之带来一些题目,譬喻数据的主键ID分派题目。我们以Mysql为例,凡是我们行使的是数据库的自增主键,我们在分表的时辰也只管担保营业上不必要跨表查询数据,可是不免会碰着这样的场景,这个时辰我们就谋面对这样一个题目,假如两张表上面的主键ID一再,那么营业就会堕落,带来不行估计的效果。

数据库分库分表后,带来的这个困难,怎样办理?

那么我们怎样办理主键独一的题目呢?这里我们先容几种常见的要领,以及他们的优弱点。

要领一

起首我们可以操作随神秘领天生主键,凡是,只要随机算法公道,适内地加点盐,天生的64位的主键ID,一再的概率极低(险些可以不消思量碰撞),这种要领的利益是实现很是简朴,可是存在什么题目呢?起首是ID的长度会很是的长,我们都知道,在数据库中,主键ID过长会低落索引的机能。其次,随机天生主键ID是无序的,这就意味着插入新的数据的时辰,都必要插入索引,我们都知道Mysql的索引是B+树,B+树假如不断地插入无序的数据,机能会大大低落,造成的功效就是插入机能低落。智慧的同窗也许已经想到了,我们也可以天生有序的随机数,譬喻行使Twitter公司的SnowFlake,可以必然水平上停止B+树插入带来的影响。

要领二

第二种要领,我们照旧可以操作数据库的主键递增特征。在Mysql数据库中,是可以配置主键递增的步长,也就是我们不必在1,2,3这样递增,若是我们配置步长为10,开始为10,那就是10,20,30了。若是我们分了10张表,那么我们可以让每个表的起始别离是0到9,然后步长配置为10,这样子就可以担保十张表内里的数据不会一再了。这种要领的利益同样很是简朴,只必要简朴的设置罢了,那么它存在什么题目呢?起首是扩展很是的不利便,假如我们想要把分表从10改成20呢?会给我们带来必然的贫困。

要领三

第三种要领,我们可以维护一个ID分派器,我们可以行使Redis等相干组件,将提前分派好的ID放在Redis的行列傍边,每次营业要插入的时辰,先从预分派的行列中取一个元素出来,然后再插入数据库傍边。虽然这种做法必要必然的开拓量,可以相对担保主键id的次序,扩展也相对的简朴。

总结

那么哪一种要领好呢?在计较机措施计划中,没有绝对的好也没有绝对地差,只要可以或许贴近营业,担保体系安稳运行,又不必要较大的开拓与维护本钱,那就是好要领,必要按照本身的营业与此刻的开拓运维履历举办选择。接待各人存眷我,配合进修,配合前进。各人的支持是我继承唠嗑的动力。

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读