分库分表?如何做到永不迁移数据和避免热点?
但又要思量到数据匀称,那是不是可以在必然的范畴内数据匀称的呢?由于我们每次的扩容必定会事先计划好这次扩容的范畴巨细,我们只要担保这次的范畴内的数据匀称是不是就ok了。 四、方案计划 我们先界说一个group组观念,这组内里包括了一些分库以及分表,如下图: 上图有几个要害点: 1)id=0~4000万必定落到group01组中。 2)group01组有3个DB,那一个id怎样路由到哪个DB? 3)按照hash取模定位DB,那模数为几多?模数要为全部此group组DB中的表数,上图总表数为10。为什么要去表的总数?而不是DB总数3呢? 4)如id=12,id%10=2;那值为2,落到哪个DB库呢?这是计划是前期设定好的,那怎么设定的呢? 5)一旦计划定位哪个DB后,就必要确定落到DB中的哪张表呢? 五、焦点主流程 凭证上面的流程,我们就可以按照此法则,定位一个id,我们看看有没有停止热门题目。 我们看一下,id在【0,1000万】范畴内的,按照上面的流程计划,1000万以内的id都匀称的分派到DB_0,DB_1,DB_2三个数据库中的Table_0表中,为什么可以匀称,由于我们用了hash的方案,对10举办取模。 上面我们也提了疑问,为什么对表的总数10取模,而不是DB的总数3举办取模?我们看一下为什么DB_0是4张表,其他两个DB_1是3张表? 在我们布置处事器时,有些处事器的机能高,存储高,就可以布置多存放些数据,有些机能低的就少放点数据。假如我们取模是凭证DB总数3,举办取模,那就代表着【0,4000万】的数据是均匀分派到3个DB中的,那就不可以或许实现凭证处事器手段恰当分派了。 凭证Table总数10就可以或许到达,看怎样到达: (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |