关于分库分表的一些面试问题

1. 分库分表是为了解决什么问题

分库分表的目的就是为了解决由于数据量过而导致数据库性能降低的问题,将原来独立的数据库拆分为若干数据库组成,将数据大表拆分成若干数据表,使得单一数据库、单一数据表的数据量变小,从而达到提升数据库性能的目的,简单来说,就是为了缓解数据库的压力,最大限度提高数据操作的效率

2.分库分表 是如何实现的

将原来的数据库拆分为若干个数据库组,将原来独立的表拆分为数据表组,是单一数据库数据表的数据量变小,从而达到提升数据库性能的效果


3.分库分表的方式

垂直分库:按照业务类型分库

好处:解决业务层面的耦合,业务清晰;能对不同业务的数据经行分级管理、维护、监控、扩展等;高并发场景下垂直分库一定程度的提升IO、降低单机硬件资源的瓶颈

水平分库:把同一个表的数据按一定规则拆分到不同的数据库中,每个库可以·放在不同的服务器上

好处:解决了单库大数据,高并发的性能瓶颈;提高了系统的稳定性以及可用性

垂直分表:按照字段分表

好处:充分发挥热门数据的操作效率,确保高效率操作不会被低效率操作所拖累

垂直拆分的原则:

把不常用的字段单独放在一张表;把text,blob等大字段拆分出来放在附表中;经常组合查询的列放在一张表中;

水平分表:在同一个数据库内,把同一个表的数据按照一定规则拆到多个表中

好处:优化了单一表数据量过大儿产生的性能问题

一般来说,在系统设计阶段就应该根据业务耦合松紧来确定垂直分库,垂直分表方案,在数据量及访问压力不是特别大的情况,首先考虑缓存、读写分离、索引技术等方案。若数据量极大,且持续增长,再考虑水平分库水平分表

4.项目分库分表的方案

hash方式:

优点:数据均匀

缺点:扩容需要做数据迁移

rang方式(范围方式):

优点:扩容不需要做数据迁移

缺点:存在热点数据,前期访问的是同一数据库,容易使数据全部打在第一张表上

综合方案:

根据用户id哈希分库

根据订单范围分表

  • 7
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
分库分表是一种常用的数据库优化手段,特别适用于数据量大且并发访问高的场景。以下是关于MySQL分库分表的一些面试题: 1. 请问什么是分库分表分库分表是指将一个大型数据库分成多个小的数据库,再将每个小的数据库进行水平或垂直切分,从而达到提高数据库性能和扩展能力的目的。 2. 为什么需要进行分库分表分库分表可以解决数据库在高并发情况下的性能瓶颈问题,提高数据库的读写能力和负载均衡能力。同时,它还可以解决单表数据量过大导致查询效率低下的问题。 3. 分库分表的常用策略有哪些? 常见的分库分表策略包括水平分表和垂直分表。水平分表是指将一个表的行数据按照某种规则分散到多个表中,例如按照用户ID或时间进行分表;垂直分表是指将一个表按照列的属性划分到多个表中,例如将经常被查询的列和不常被查询的列分成两个表。 4. 分库分表的中间件有哪些? 在实际应用中,常常使用分库分表中间件来简化分库分表的操作。常见的分库分表中间件有Mycat和sharding-jdbc等。 5. 分库分表可能会带来哪些问题分库分表可能会对事务处理、跨节点Join操作和分布式事务等方面带来一些挑战。需要注意解决这些问题,以保证分库分表的正确性和稳定性。 以上是关于MySQL分库分表的一些面试题目,希望能对你有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值