🗒️MySQL索引区分度低 特殊情况执行扫表CPU100%
type
status
slug
date
summary
tags
category
password
icon
背景
数据库中有一张任务表
里面有百万千万数据,给 statsus 加了索引(考虑节约空间),正常只查询未完成状态数据,最多 1w 条,正常就是几百条
运行半年多,遇到白嫖用户大量提交任务,这类数据待执行有 20w+,当时表中数据有 400w 左右
下面 SQL 作用是查询当前执行中用户数量,然后均分每个用户最大任务数量
分析问题临时解决
MySQL 执行优化任务这类走扫表更加合适,然后 CPU 就 100%
临时去掉这块代码,恢复正常
最终解决方法
业务优化:在生产端限流,而不是消费限流
索引优化:status、nick 联合索引,不要心疼空间,出问题背上了跟着点空间相比,孰轻孰重
上一篇
MySQL bit 和 thinyint
下一篇
秒杀系统时间配置、Nginx查看服务器系统时间
Loading...