面试题系列解答:Mysql怎么分库分表

本文详细介绍了Mysql的分库分表策略,包括垂直切分和水平切分,以及实施步骤和常见问题。通过实例展示了如何创建分表,并讨论了ID全局唯一性保证和查询数据结果集合并的问题,提供了应对这些问题的解决方案。
摘要由CSDN通过智能技术生成

通过优锐课核心java学习笔记中,我们可以看到Mysql怎么分库分表,码了很多专业的相关知识, 分享给大家参考学习。

一、何谓分库分表?
把原本存储于一个库的数据分块存储到多个库(主机)上,把原本存储于一个表的数据分块存储到多个表上。

二、为什么要分库分表?
数据库中的数据量不一定是可控的,在未进行分库分表的情况下,随着时间和业务的发展,库中的表会越来越多,表中的数据量也会越来越大,相应地,数据操作,增删改查的开销也会越来越大。
另外,由于无法进行分布式式部署,而一台服务器的资源(CPU、磁盘、内存、IO等)是有限的,最终数据库所能承载的数据量、数据处理能力都将遭遇瓶颈。

三、分库分表的实施策略
分库分表有垂直切分和水平切分两种:

依照不同的表(或者Schema)来切分到不同的数据库(主机)之上,这样的切分称之为数据的垂直(纵向)切分。
依据表中的数据的逻辑关系,将同一个表中的数据依照某种条件拆分到多台数据库(主机,当然也可能是同一个数据库)上面。这样的切分称之为数据的水平(横向)切分。
3.1、数据的垂直切分

image.png
将数据库想象成由非常多个一大块一大块的“数据块”(表)组成,我们垂直的将这些“数据块”切开,然后将他们分散到多台数据库(主机)上面,这样的切分方法就是一个垂直(纵向)的数据切分。

一个架构设计较好的应用系统,它的总体功能肯定是由非常多个功能模块所组成的,每一个功能模块所须要的数据对应到数据库中就是一个或者多个表。

在架构设计中,各功能模块相互之间的交互点越少,系统的耦合度就越低,系统各个模块的维护性以及扩展性也就越好。这样的系统,实现数据的垂直切分也就越简单。

这样的系统,当我们依据功能模块来进行数据的切分,不同功能模块的数据存放于不同的数据库主机中,能够非常简单就避免掉跨数据库的Join存在,同一时候系统架构也非常的清晰。

实际情况下,大部分系统是很难做到全部功能模块所使用的表全然独立,这个就涉及到跨节点Join的问题,这个后面去讲。

3.2、数据的水平切分

image.png
数据的垂直切分基本上能够简单的理解为依照表依照模块来切分数据,而水平切分就不再是依照表或者是功能模块来切分了。一般来说,简单的水平切分主要是将某个访问极

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值