优化数据库的吞吐量

面对数据库服务器高负载,CPU占用99%的问题,通过分析发现大量table lock和sleep日志。采用读写分离策略优化,设置一台master服务器处理写入,三台slave服务器分担读操作,通过BaseDao抽象数据源实现读写分离,降低数据库压力,有效提升页面访问速度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题
  • 最近出现页面访问非常慢,经过排查,发现数据库服务器负载非常高,cpu占用99%左右
  • 数据库慢查询日志中的sql语句在正常负载下执行并不慢,但是在那一个时刻确是非常慢的
  • 日志中,有大量的table lock,sleep等日志信息
  • 数据库使用的mysql,使用的是MyIsam存储引擎
解决思路

       根据上述情况,明显为数据库压力过大,当然有很大可能是由于程序代码造成的问题,但是修改程序代价高昂,时间成本也很高

  • 增加数据库服务器的台数
  • 因为我们的服务的添加修改和删除接口不多,写入的需求较小,但是查询的需求非常大,基本都是浏览和查询,所以使用了读写分离,读写分离后数据库存储引擎就不需要调整了 
  • 写入使用一台服务器作为master,查询使用三台slave服务器分载数据库的读

数据库读写分离实现

  • 所有的数据库接口都继承于BaseDao,
  • BaseDao封装了两个数据源,一个是读库的数据源,一个是写库的数据源
  • BaseDao所有对读封装的接口都使用读库的数据源
  • BaseDao所有对写封装的接口使用写库的数据源

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值