
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
分库分表是程序员在做数据库优化的时候会经常用到的一种优化方法,今天贵阳达内就给大家简单介绍一下,分库分表应用方法分享。希望通过对本文的阅读,大家在数据库优化领域有更多的了解。
1、开篇
日常开发中,实现数据库的分库分表,在经常使用工具方面,常用的有像sharding-sphere、TDDL、Mycat等,然后,根据主键key做数据分布,有两种常用的方案,Hash取模方案和Range范围两种方案,两种路由算法,通过指定的key值进行运算后进行数据路由。两种方案也各有各的优缺点,下面做个梳理。
2、Hash取模
这个方案比较好理解,例如,我们假设未来几年内,数据能够增长到3000万,那,我们可以设计3张表,设表名分别为:table\_0,table\_1,table\_2,每张表存1000万数据,我们利用id作为路由key,进行算法处理,将hash运算后的结果与3进行取模,然后根据所得的值,可以将数据存放到对应的表中。这种方式的优点是,数据可以均匀分散的存储到对应的表中,不会造成数据全部存储到一个表中的情况,造成热点库表;但是缺点的话也很明显,就是如果以后再需要扩容的话,再新增表后,例如又新增了table\_3,table\_4,table\_5,新的取模就从3变成了6,那这时候,之前的表中的数据,就需要做全量的数据迁移,因为取模的值发生了变化,按照新值取模,可能就找不到数据了。那面对大量的已有数据,数据迁移就比较麻烦了。
3、Range范围方法
基于以上两种方式的优势和劣势,可以设计一种能够兼顾两者优势的方案,即能使数据能够分散存储,也能方便以后的扩容。以下算是一个方案。主要就是利用hash算法来实现数据的分散存储,利用range方式能够比较好的扩容,将两种方案的优势结合使用。
4、具体方案
即每次扩容,只需要整体增加一个分组即可,一个分组下,可以存储将近几年的数据,所以也不用经常扩容。然后,也可以根据业务情况,将旧数据做归档处理,像现在优惠券系统的数据,旧数据就可以做整体归档处理,不影响正常业务情况,也减轻生产库的压力。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加抖音太原达内IT培训学习了解。