Mysql海量数据调优方案 +mycat+mysql主从复制配置

mysql海量数据优化性能方案

myCat的一篇简单应用好文

https://blog.csdn.net/qq_35890572/article/details/81162110

产生瓶颈的原因一般有三:

1.mysql连接数过多
2.单表数据量多大(数据量大会导致索引所占硬盘空间多大,因为索引查找使用的是B+树,需要把索引加载从硬盘加载进内存,这就是瓶颈最大原因)

3.硬件资源

常见的优化方案

读写分离、分库分表(表分区是它子集)、缓存、索引、sql优化
海量数据的主要解决方式常见还是读写分离、分库分表

优点:解决连接数、硬件资源问题。缺陷:需要考虑主从库延时的问题
优点:解决连接数、硬件资源问题。缺陷:需要考虑主从库延时的问题
在这里插入图片描述

分库分表

垂直拆分:
1.根据业务场景把一个库的表拆分到好几个库,例如用户库、订单库、商品库等等。(优点:业务明晰。缺点:关联查询可能要支持分布式)
2.把一个多字段的大表按常用字段和非常用字段进行拆分,大表变小表。
优点:
1.可以使得数据变小,一个数据块(block)就能存放更多的数据,在查询时就会减少I/O次数(每次查询时读取的Block就少)

  1. 可以达到最大化利用Cache的目的,具体在垂直拆分的时候可以将不常变的字段放一起,将经常改变的放一起

缺点:

  1. 主键出现冗余,需要管理冗余例

  2. 会引起表连接JOIN操作(增加CPU开销)可以通过在业务服务器上进行join来减少数据库压力

  3. 依然存在单表数据量过大的问题(需要水平拆分)

水平拆分(更重要):
1.把表数据过多的数据分片分离,按时间、按哈希取mod分离,枚举分离等
实际情况中往往会是垂直拆分和水平拆分的结合
水平拆分的优点是:
2.不存在单库大数据和高并发的性能瓶颈
应用端改造较少

缺点是:
1.分片事务一致性难以解决
2.跨节点Join性能差,逻辑复杂(mycat设置合理,可以优化该问题)
3.数据多次扩展难度跟维护量极大

Mycat设置表分片

在这里插入图片描述
我们目的是使用中间件mycat,给表设置分片,配置mysql主从复制分离读写,做一个演示例子。
左边绿色是逻辑库,右边才是目标想要得到的结果。
逻辑表的概念:
分片表指用户表
E-R表:假设用户跟用户地址是一对多关系,ER表指用户地址表,数据跟随用户的关联关系
全局表指数据字典表,适合那种不多变,但在各个业务都有使用的表。

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值