![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
分库分表
一颗向上的草莓
后台开发者,前端爱好者,个人博客:http://catchu.github.io
展开
-
分库分表的面试题5
1、面试题你们有没有做MySQL读写分离?如何实现mysql的读写分离?MySQL主从复制原理的是啥?如何解决mysql主从同步的延时问题?做了读写分离。配置主库和从库,主库下面挂从库,主库数据发生变更时写到mysql的binlog日志,主库与从库建立连接,同步数据到从库的relay log中继日志,从库起一个sql线程解析relay log日志并执行。高并发下会导致读写延迟,比如主库每秒写并发2000,延迟时间较长,可考虑分库;打开并行复制;如果必须要写数据之后立马读,可以配置读.转载 2020-06-27 11:24:22 · 446 阅读 · 0 评论 -
分库分表的面试题4
1、面试题分库分表之后,id主键如何处理?2、面试官心里分析其实这是分库分表之后你必然要面对的一个问题,就是id咋生成?因为要是分成多个表之后,每个表都是从1开始累加,那肯定不对啊,需要一个全局唯一的id来支持。所以这都是你实际生产环境中必须考虑的问题。3、面试题剖析(1)数据库自增id这个就是说你的系统里每次得到一个id,都是往一个库的一个表里插入一条没什么业务含义的数据,然后获取一个数据库自增的一个id。拿到这个id之后再往对应的分库分表...转载 2020-06-26 16:19:41 · 179 阅读 · 0 评论 -
分库分表的面试题3
1、面试题如何设计可以动态扩容缩容的分库分表方案?2、面试官心里分析(1)选择一个数据库中间件,调研、学习、测试(2)设计你的分库分表的一个方案,你要分成多少个库,每个库分成多少个表,3个库每个库4个表(3)基于选择好的数据库中间件,以及在测试环境建立好的分库分表的环境,然后测试一下能否正常进行分库分表的读写(4)完成单库单表到分库分表的迁移,双写方案(5)线上系统开始基于分库分表对外提供服务(6)扩容了,扩容成6个库,每个库需要12个表,你怎么来增加更多库...转载 2020-06-26 16:08:41 · 265 阅读 · 0 评论 -
分库分表的面试题2
1、面试题现在有一个未分库分表的系统,未来要分库分表,如何设计才可以让系统从未分库分表动态切换到分库分表上?可以采用停服清洗数据和双写。我们采用的双写,用户新增修改操作往两份数据库上都写,老用户走老接口从老数据库中查询,新用户走新接口从新数据库查,注意需要核对新老版本数据是否全一样(可以写程序跑),一般新版本发布几天后,90%用户会更新到最新版,慢慢基本都走新接口了,待某次版本强升之后,老版本数据可以去掉了。2、面试官心里分析你看看,你现在已经明白为啥要分库分表了,你也知道常用的..转载 2020-06-26 15:55:32 · 245 阅读 · 0 评论 -
分库分表的面试题1
1、面试题为什么要分库分表(设计高并发系统的时候,数据库层面该如何设计)?用过哪些分库分表中间件?不同的分库分表中间件都有什么优点和缺点?你们具体是如何对数据库如何进行垂直拆分或水平拆分的?分库的目的是为了提高并发度,简单来说就是TPS,单个数据库每秒并发2000都非常高了,一般保持在1000左右;分表示为了提高查询速度,简单来说就是QPS,单表数据量大查询慢,可以拆分成多个表;sharding-jdbc和mycat以及自研组件。sharding-jdbc支持分库分表,读写分离,柔性事.转载 2020-06-26 15:28:07 · 678 阅读 · 0 评论 -
数据库软件架构,到底要设计些什么
一、基本概念概念一:单库概念二:分片分片解决“数据量太大”这一问题,也就是通常说的“水平切分”。一旦引入分片,势必面临“数据路由”的新问题,数据到底要访问哪个库。路由规则通常有3种方法:(1)范围:range优点:简单,容易扩展。缺点:各库压力不均(新号段更活跃)。(2)哈希:hash优点:简单,数据均衡,负载均匀。缺点:迁移麻...转载 2019-07-29 19:05:12 · 131 阅读 · 0 评论 -
业界难题-“跨库分页”的四种方案
一、需求缘起分页需求互联网很多业务都有分页拉取数据的需求,例如:(1)微信消息过多时,拉取第N页消息(2)京东下单过多时,拉取第N页订单(3)浏览58同城,查看第N页帖子这些业务场景对应的消息表,订单表,帖子表分页拉取需求有这样一些特点:(1)有一个业务主键id, 例如msg_id,order_id,tiezi_id(2)分页排序是按照非业务主键id来排序...转载 2019-07-24 18:02:21 · 463 阅读 · 0 评论 -
SpringBoot 2.x ShardingSphere读写分离实战
一. 前言面对日益增加的系统访问量,数据库的吞吐量面临着巨大瓶颈。 对于同一时间有大量并发读操作和较少写操作类型的应用系统来说,将单一的数据库拆分为主库和从库,主库负责处理事务性的增删改操作,从库负责处理查询操作,能够有效的避免由数据更新导致的行锁,使得整个系统的查询性能得到极大的改善。 通过一主多从的配置方式,可以将查询请求均匀的分散到多个数据副本,能够进一步的提升系统的处理能力。 使用多...转载 2019-07-24 14:11:35 · 280 阅读 · 0 评论 -
SpringBoot 2.x ShardingSphere分库分表实战
一. 项目需求在之前我做项目的时候,数据量比较大,单表千万级别的,需要分库分表,于是在网上搜索这方面的开源框架,最常见的就是mycat,sharding-sphere,最终我选择后者,用它来做分库分表比较容易上手。二. 简介sharding-sphere官网地址: https://shardingsphere.apache.org/ ShardingSphere是一套开源的分...转载 2019-07-24 14:09:05 · 415 阅读 · 0 评论 -
分库分表方案
一、数据库瓶颈不管是IO瓶颈,还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载活跃连接数的阈值。在业务Service来看就是,可用数据库连接少甚至无连接可用。接下来就可以想象了吧(并发量、吞吐量、崩溃)。1、IO瓶颈第一种:磁盘读IO瓶颈,热点数据太多,数据库缓存放不下,每次查询时会产生大量的IO,降低查询速度 -> 分库和垂直分表。第二种:网...转载 2019-07-18 21:00:52 · 220 阅读 · 0 评论 -
分库分表实战:可能是用户表最佳分库分表方案
再次抛出笔者的观点,在能满足业务场景的情况下,单表>分区>单库分表>分库分表,推荐优先级从左到右逐渐降低。本篇文章主要讲用户表(或者类似这种业务属性的表)的分表方案,至于订单表,流水表等,本文的方案可能不是很合适,可以参考笔者另一篇文章《分库分表技术演进&最佳实践-修订篇》。我们首先来看一下分表时主要需要做的事情: 选定分片键:既然是用户表那分片键非用户ID...转载 2019-07-18 20:42:12 · 8268 阅读 · 5 评论