关于分库分表的问题

为什么要分库分表?你用过哪些分库分表的中间件?
不同的分库分表中间件有什么优缺点?
你们具体是如何对数据库如何进行垂直拆分或者水平拆分的?
在系统承受高并发压力的情况下,数据库中数据量巨大,磁盘读写效率降低。为了降低数据库的压力,我们采用分库分表的设计,
分表:
单表都几千万数据量量,数据量太大,会影响sql执行的性能。将一个表中的数据拆分成多个相同的表。
分库:
拆分为多个库,承受并发增加了多倍
分库分表的中间件:
Sharing-jdbc属于client层技术方案,不用单独部署,性能高,不需要二次转发。每个系统模块都要耦合sharding-jdbc的依赖
mycat属于proxy层方案,需要单独部署,升级方便,只需部署中间件就ok

垂直拆分:
将一个表的字段拆分成多个表,每个表拥有之前一张大表的不同字段,用外键进行关联,将经常查询的字段喝不经常查询的字段分成两张表,
水平拆分的意义就是方便扩容,降低并发压力。
水平拆分:
将一张表横向切割,比如一张拥有100万数据的表,分成三张,每张表拥有的字段是相同的,只是将数据量分开。一张表可能只拥有原表的1/3。
分库分表的两种方式:
range:按照时间范围来分配,比如某一个时间段来决定插入哪个数据库中。容易产生热点问题,可能大的访问量全部都打在了最新更新的数据上。
hash:通过hash算法,将某个字段的值进行hash均匀的分散。平均分配数据库和压力,扩容麻烦,涉及到数据迁移问题。之前的数据需要重新计算 hash 值重新分配到不同的库或表。
如何不停机进行分库分表迁移?
停机分库分表数据迁移
老的做法是在系统访问时间最低峰的时候将系统停机,后台开启多个进程,读取老的数据库中的数据,将老数据库中的数据写入分库分表中间件,让中间件写入新的分库分表的数据库中,然后将老系统代码更改不再写入老的数据库,将后面的数据全部写入消息中间件中,插入数据到分库分表中。
缺点:停机,访客无法访问网站,一旦出现问题无法解决就需要回滚老的系统版本,消耗人力。可能造成损失
不停机分库分表方案:
双写方案,
就是将线上代码改为老库和新库都写到方案,同时写两个库,系统部署后再开启数据迁移进程将老库中的数据读取写入新的库中,读取插入的时候如果出现唯一id一样的数据,就比较数据库中的时间戳,根据时间戳的时间对比哪个是新数据哪个是老数据,只允许新数据覆盖老数据,
一轮数据迁移之后可能出现数据不一致的情况,程序自动做校验检查,再次读写,直到数据一致为止。
然后将线上系统代码改为只对新库做操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
课程简介 随着互联网的发展,软件的规模在逐渐变大,用关系型数据库如何存储和处理大规模的业务数据成为企业面临的挑战, 关系型数据库作为OLTP(联机事务处理过程)系统的首选毋庸置疑,但是关系型数据面对大规模数据的处理有其先天的不足,比如单表存储上千万数据时便会出现不同程度的处理速度缓慢问题,如何解决?分库分表技术就是为了解决由于数据量过大而导致数据库性能降低的问题,将原来独立的数据库拆分成若干数据库组成 ,将数据大表拆分成若干数据表组成,使得单一数据库、单一数据表的数据量变小,从而达到提升数据库性能的目的。本课程将系统的讲解分库分表技术。 课程价值 分库分表技术是为解决关系型数据库存储和处理大规模数据的问题,主要应用于OLTP系统,它与应用于OLAP(联机分析处理)的大数据技术有不同的应用场景,本课程本着从解决生产实际问题出发,讲授分库分表技术的解决方案,包括:垂直分库、垂直分表、水平分库、水平分表、读写分离,涵盖了分库分表的各种方案,并且深入讲解Sharding-JDBC框架的原理及使用方法,通过学习本课程可以快速应用到生产实践中。 课程优势 本课程不仅讲解多种有效的分库分表的解决方案,还深入讲解了Sharding-JDBC框架的原理和使用方法,Sharding-JDBC是一套轻量级的对代码零侵入的框架,在生产中有广泛的使用。本课程从思想原理、技术框架、案例实操三个方面去学习,可以快速的将分库分表技术应用到生产实践中,解决大数据存储与处理的问题

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值