关于最近的一些数据库优化的经验分享(后续将持续更新)

      最近新接手公司一个锅,活跃用户在八千左右,但是活跃时间段非常集中,数据量的话,多个表数据在500万以上最多的大概是九百多万的样子,交给我时后台某个列表页面打开需要1.8min,前台排行榜及某些统计页面常年处于数据库请求超时的状态。

       因为是基于TP5的项目,在接手后第一时间将一些查询在请求时加了缓存,并将原有的缓存引擎切换为redis,对某些重复的查询有了显著的提高,但是对于一些主要的问题影响不大。以下是一些细节性的问题解决:

1. mysql查询时,where条件里带有大于或小于这些条件时,原本会走range索引,但如果查询(select)的字段里面有未索引字段或者字段索引失效时会导致 range失效

2.对于时间段查询比较频繁的,表分区会有明显提升

3.标签类数据存储,在数据库设计时一定要用字典表形式,千万千万不要逗号分隔存字符串。。。

4.排行榜类型要防止重复查询,目前实现为单进程锁查询后存redis的形式

5.innodb引擎在带有大范围where条件查询时会导致锁表,由于这些表需要事务保证一致性,后面计划用从库改为myisam表的形式(待考虑)

6.除了标签类,某些日志类表可以把用户id等一些无需range的字段做hash索引,效果明显

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值