课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
分库分表是软件运行到一定时期的时候必然会经历的一个过程,而今天我们就通过案例分析来了解一下,分库分表都有哪些常用方法。
垂直分库
垂直分库指按照服务或者模块的划分,将服务或者模块涉及的数据划分至独立的数据库。这样实现了服务之间的数据解耦,从而可以让各个服务独立发展。同时,相比单体应用,多个服务对应多个库,从资源上看也更加充裕(相似的配置情况下),从而可以支撑更大的业务量和访问量。
垂直分表
垂直分表与服务拆分没有关系。通常体现的是应用的设计优化,例如,在数据库中将TEXT/BLOB类型的字段与其他数据拆分存储,从而降低因为大量IO而带来的性能瓶颈。又例如,在数据库中将低频访问的字段与高频访问的字段拆分存储,这样可以更好的利用缓存空间,提高缓存使用效率。等等。
水平分表
在垂直分的基础上,随着业务的发展,单个服务可能也会面临巨量的访问量和数据量。例如,对于用户直接相关的服务(如用户中心,如订单中心)来说,用户量的增加直接导致数据量的增加。这个时候单表的数据量很容易会触发单表容量的上限,在典型的实践中,常用的MySQL数据库,当单表数据量达到数百万至千万时,如果数据库操作不能有效利用索引,将会出现显著的性能问题。
此时,可以进行水平分表,即将大表中的数据,按照一定的规则切分,将他们放到一系列相同结构的表之中,每个表存储整个数据集中的一部分。
水平分库分表
进行水平分表,还是存在瓶颈,即单库所能利用的硬件资源终归有限,不可能无限扩展。此时如果业务继续发展,则可能需要继续进行调整。
此时,可以在分表的基础上,再进行更粗粒度的划分,将分表按照一定规则划分到若干个库中,这时即为分库分表。
完成分库分表之后,不同的库部署在硬件资源上,这样可以成倍地提升数据库层面可以提供的访问量支撑。
希望这辈子,最让你无悔的事情就是来达内学习!学习向来不是件易事,但无论过程多么艰难,希望你依然热爱生活,热爱学习!永远记得,达内将与你一同前行!现在扫码,立即领取万元课程礼包,助力0基础快速入行,为你梳理行业必备技能,全方位了解岗位发展前景!
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请在707945861群中学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。