分库分表怎么做?
还是需要具体问题具体分析吧。总的来说,这里提供关于分表的两个思路,以供参考,分库其实也有类似的思路。
(1)垂直分表:这是最基本的玩法了。说白了,就是“大表拆小表”,主要用于某个表中的字段比较多的情况,将不常用的字段,或长度比较大的字段,拆分到对应的“扩展表”,以提高主表的读写效率。其实在规模不是很大的情况下,我们用索引也是基于类似的考虑。
(2)水平分表:我觉得这可能就是你想问的,就是在记录数量很大了以后,怎么分表。这里,最重要的是要考虑两点:
当前数据行的特征,尽可能的将业务上有关联的数据行保持在一张表中,也就是说,要建立一个合适业务规模的分表策略。
如何确保主键唯一性,显然的,分表后,不同的表的主键如果还是按照传统最常用的自增长模式,就一定会出现,业务在进行跨表的查询时,会因为主键的重复,而导致错误,因此,这里重点就是要规划好新的主键产生方案,通常是需要将主键或者时间等字段进行Hash和取模后再行进行拆分
至于拆分后的查询,对于垂直分表,没有很特别的方面,水平分表,则主要是要考虑对于group by或order by之类的查询,这方面有很多的技巧,就不在这里一一赘述了。
Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有