mysql为什么需要中间件_为什么要用数据库中间件

问题一:数据库存储的数据量不大,但并非的读写操作都很大,超过数据库服务器的处理能力。

基于阿里云RD版测试结果(Mysql处理性能)

CPU        内存        连接数        TPS        QPS

4            16            4000            685        12337

8            16            4000            982        20879

8            32            8000            1308        23555

16            64        16000            2040        41530

单台机器扩展不能达到我们的要求,怎么办?

解决方案:常用做法——加缓存(如:Redis),减少数据库压力

衍生问题:

1、缓存会有过期命不中,还是忽悠大量的读和全部的写操作将请求数据库,如果数据库支持不起怎么办?

:常用做法——读写分离(Mysql主从复制), 由多台数据库提供读写服务

2、读写分离则需要操作不同的库,对Dao层的代码有影响吗?如何隔离这种变化?

:增加数据访问模块——(数据库中间件),减少代码侵入

问题二:应用的业务模块很多,总的数据量很大,并发读写操作均超出单个数据库服务器的处理能力?

解决方案:数据量很大,并发压力很大,可以分库+读写分离

1、对于读压力,我们可以集群多个从库。

2、对于写压力,多个主库间数据库同步,又难保数据一致性? 数据量大单库存不来怎么办?

:分库 ——如何分库? 按照业务模块分成多个数据库(用户库、商品库...)

衍生问题:

1、对于多个数据库之间谁负责负载均衡操作?

2、可能要操作多个库,对Dao层的代码有影响吗?

a、如果要跨库关联查询怎么办?

b、如果某业务数据库的读写压力大,我们可以怎么办?

:增加数据访问模块——(数据库中间件),减少代码侵入

问题三:如果单个表的数据量很大,超出了单表上线, 如电商网站的商品表、订单表等?

解决方案:超过1000万考虑分区表、分表

衍生问题:

1、如何分?

:根据一定规则将数据分到多个表中存储, 可以有怎样的分表规则?

2、分表的情况下对Dao层的代码有影响吗?

如何决定数据存储在哪里?

如何查询多个表?

如何做到对Dao层透明?

:增加数据访问模块——(数据库中间件),减少代码侵入

总结:为什么要用数据库中间件

在高并发,海量数据的情况下:

1、数据库存储数据量不大,但并非的读写操作都很大,超过数据库服务器的处理能力。

2、应用的业务模块很多,总的数据量很大,并发读写操作均超出单个数据库服务器的处理能力。

3、如果单个表的数据量很大,超出了单表存储上线,如电商网站,商品表、订单表等。

为解决数据存储,访问性能问题,我们需要数据库中间件,它让我们可以再应用程序中快速应用读写分离、分库、分表!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值