【MySQL分库分表+主从】分库分表+主从连环炮
本问题对应的项目链接:高频题回答模版训练
PS:分库分表其实问的不多,掌握几个常见问题即可,不用在这里花太多时间
1、介绍一下垂直分表和水平分表?
2、分库分表下,全局 ID 如何生成?
3、什么情况下可以使用分库分表?
4、什么是主从架构?
5、主从架构有哪些优缺点?
本问题对应的项目链接:高频题回答模版训练
PS:分库分表其实问的不多,掌握几个常见问题即可,不用在这里花太多时间
1、介绍一下垂直分表和水平分表?
2、分库分表下,全局 ID 如何生成?
3、什么情况下可以使用分库分表?
4、什么是主从架构?
5、主从架构有哪些优缺点?
共以下 1 个回答
1、介绍一下垂直分表和水平分表?
垂直分表就是将一张表中的多个字段拆分成多个表,每个表都含有部分字段。如果一张表在大多数查询中只涉及其中的一部分列,可以将经常查询的列放在主表中,不经常查询的列放在从表中,来提升查询效率。
水平分表就是将一张表的某些记录分到别的表中,从而减少单个表的数据量来提高读写效率。水平分表有两种方式,一种是按范围划分,比如时间范围,将订单表分为 2022 年订单表和 2023 年订单表;另一种是哈希分法,主要用来平均分配每个库的数据量和请求压力。
2、分库分表下,全局 ID 如何生成?
分库分表下,如果继续使用数据库自增 ID 的话,在高并发情况下会有瓶颈,适合数据量很少的情况。当数据量大时,首先可以考虑 UUID,这样就能本地生成而不依赖数据库,缺点是 UUID 太长,作为主键的话性能不好;再有可以考虑雪花算法…(见上篇)
3、什么情况下可以使用分库分表?
分库分表其实是为了分别解决两种问题,分库主要解决的是并发量大的问题,因为并发量一旦上来了,由于数据库的连接数有限,数据库本身就会成为瓶颈,此时就需要考虑分库,通过增加数据库实例的方式来提供更多的可用数据库连接,从而提升系统的并发能力;分表主要解决的是数据量大的问题,如果某张表的数据量非常大,导致表的增删改查性能遇到瓶颈了,即使做了很多优化还是无法提升效率,此时就需要考虑分表了。
4、什么是主从架构?
主从架构是一种数据库复制技术,用于在多个 MySQL 数据库中间保持数据的同步和一致性。主从架构中一般有两个角色,主库和从库。
其中主库负责处理写操作,从库通过主从复制来保持与主库的数据一致性,但从库只能读不能写。
主从架构的优势在于可以提高系统的可用性,一旦主库出现问题,从库可以顶上代替主库。除此之外,主从架构把读操作均衡到多个从库上,能有效减轻主库的负担,提供系统整体的性能。
5、主从架构有哪些优缺点?
主从架构的优势在于…
当然它也有缺点,比如主从架构存在 “主从延迟”,主从服务器之间的数据复制是异步的,两者之间可能会有一定延迟,对于一些实时应用可能会存在问题;还有可能会发生单点故障,假如主库突然故障,需要迅速切换到从库,这期间可能会存在一段时间的服务中断等等。