为什么要分库分表

在这里插入图片描述

为什么分库分表

业务驱动

  • 业务:增长快,业务复杂度高。系统流量疯狂增长,部分大表数据每天百万或千万级别增长
  • 系统体验:系统访问越来越慢,数据库频繁告警,各种慢SQL

分库分表优缺点

优点

分库收益: 解决高并发场景下的数据库连接不足

分表收益: 解决单表数据量过大(千万以上,未来增长快),读写性能有瓶颈

缺点

程序设计复杂: 引入中间件,如:MyCat、ShardingSphere。还有跨库查询,跨库分页等问题

成本增加: 现在多个库,会增加成本。

如何分库分表

分库分表原则

垂直分:

  • 垂直分库:比如不同的业务,对应不同的数据库
  • 垂直分表:比如由一个大宽表,如果有一部分字段是经常要查询的,有一部分是不经常使用的,可以将不经常使用的字段放到另一张表中,然后使用外键关联。

水平分: 就是数据量的拆分

  • 水平分库:原先一个库的数据,现在多个库来承担
  • 水平分表:原先一个表的数据,现在多个表来承担

库表的个数一般是2的倍数:16、32、64、128

分库多少合适

先压测下,测出单库能承受的QPS大概是多少

可以预估未来3年业务QPS峰值,然后除以单库的QPS,得到需要分几个库。

比如:未家3年业务QPS峰值:2WQPS,单库:2000QPS

计算分库数量:2w/2000=10个库,一般是2的幕次方,可以分16个库

分表多少合适

可以预估未来总数据量,然后除以当前表中的数据量,确定分几个表。

分库分表字段选择逻辑

如何选择分库分表字段:比较通用的常见字段选择:用户Id、订单号、运单号、买家ld、卖家ld、交易时间、地区

分库分表算法:1. 哈希取模 2. 一致性哈希算法

分库分表落地:1. ShardingSphere中间件(首选)2. mycat中间件(不建议)

库或表不够怎么办

数据归档

将不常用的旧数据进行归档,比如:主表保留3个月数据,之前的数据删除,同步全量一份到大数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值