第2章:海量数据下Mysql数据库常见分库分表介绍

Mysql数据库垂直分表讲解

需求:当我们商品表中字段太多,且每个字段的访问频率不一样,浪费了IO资源,需要进行优化。

垂直分表介绍:也就是将大表拆小表,基于列字段进行的;拆分原则一般是表中的字段较多,将不常用的或者数据较大,长度较长的拆分到扩张表如text类型字段;访问频次低,字段大的商品描述信息单独存放在一张表中,访问频次较高的商品基本信息单独放在一张表中。

垂直拆分原则:把不常用的字段单独放在一张表;把text,bolb等大字段拆分出来放在附表中;业务经常组合查询的列放在一张表中。

Mysql数据库垂直分库讲解

需求:C端项目里面,单个数据库的CPU,内存长期处于90+的利用率,数据库连接经常不够,需要进行优化。

垂直分库讲解:垂直分库针对的是一个系统中的不同业务进行拆分,数据库的连接资源比较宝贵且单机处理能力也有限;没有拆分之前全部都是落在单一的数据库上的,单库处理能力成为瓶颈,还有磁盘空间,内存,tps等限制;拆分之后,避免不同库竞争同一个物理机的CPU,内存,网络IO,磁盘,所以在高并发场景下,垂直分库一定程度上能突破IO,连接数及单机硬件资源的瓶颈。垂直分库可以更好解决业务层面的耦合,业务清晰,且方便管理和维护;一般从单体项目升级改造为微服务项目,就是垂直分库。

问题:垂直分库分表可以提高并发,但是依然没有解决单表数据量过大问题。

Mysql数据库水平分表讲解

需求:当我们一张表的数据达到几千万时,查询一次所花的时间长,需要进行优化,缩短查询时间。

大表拆小表:垂直分表将表结构拆分,水平分表将数据拆分。

水平分表:把一个表的数据拆分到一个数据库中的多个表,每个表只有这个表的部分数据;核心是把一个大表分割为N个小表,每个表的结构是一样的,数据不一样,全部表的数据合起来就是全部数据;针对数据量巨大的单张表(如订单表),按照某种规则(HASH取模等),切割到多张表里面去;但是这些表还是在同一个库中,所以单数据库操作还是IO瓶颈,主要是解决单表数据量过大的问题;减少锁表时间,没分表前,如果是DDL(create/alter/add等)语句,当需要添加一列的时候mysql会锁表,期间所有的读写操作只能等待。

Mysql数据库水平分库讲解

需求:在高并发项目中,水平分表后依旧在单个数据库上面,1个数据库资源瓶颈CPU/内存/带宽等限制导致响应慢,需要进行优化。

水平分库:把同个表的数据按照一定规则分到不同的数据库中,数据库在不同的服务器上;水平分库是把不同表拆到不同数据库中,它是对数据行的拆分,不影响表机构;每个库的结果都是一样,单每个库中的数据都不一样,没有交集,所有库的并集就是全部数据;水平分库的力度,比水平分表更大。

Mysql数据库分库分表总结

我们需要有前瞻思维:需要提前考虑系统一到两年左右的业务增长情况,对数据库服务器的QPS,连接数,容量等做合理评估和规划。

常规开发里面单表数据建议在1千万内,推荐是百万级别单表存储,常规sql和索引优化先行,然后结合缓冲+异步+nosql+mq。

垂直分表:将一个表字段拆分多个表,每个表存储部分字段。

好处:避免IO时锁表的次数,分离热定字段和非热点字段,避免大字段IO导致性能下降。

原则:业务经常组合查询的字段一个表;不常用字段一个表;text,blob类型字段作为附属表。

垂直分库:根据业务将表分类,放到不同的数据库服务器上。

好处:避免表之间竞争同个物理机资源,比如CPU/内存/硬盘/网络IO。

原则:根据业务相关性进行划分,领域模型,微服务划分一般就是垂直分库。

水平分库:把同个表的数据按照一定规则分到不同的数据库中,数据库在不同的服务器上。

好处:多个数据库,降低了系统的IO和CPU压力。

原则:选择合适的分片键和分片策略,和业务场景配合。避免数据热点和访问不均衡,避免二次扩容难度大。

水平分表:同个数据库内,把一个表的数据那种一定规则拆分到多个表中,对数据进行拆分,不影响表结构。单个表的数据量少了,业务SQL执行效率高,降低了系统的IO和CPU压力。

原则:选择合适的分片键和分片策略,和业务场景配合;避免数据热点和访问不均衡,避免二次扩容难度大。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值