🗒️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...
文章列表
王小扬博客
云原生
Git
Elasticsearch
Apollo
产品
Think
生活技巧
软件开发
计算机网络
CI
DB
设计
缓存
Docker
Node
操作系统
Java
大前端
Nestjs
其他
PHP