DATE_FORMAT(`date`, "%Y-%m-%d") as time,
thealth_level as "健康度",
COUNT(DISTINCT(tserver_name)) as "总数"
from
(
select
date,
server_name as tserver_name,
MIN(health_level) as thealth_level
FROM
cpu_throttled_health
WHERE
date > DATE_FORMAT(CURRENT_DATE() - INTERVAL 7 DAY, "%Y-%m-%d")
GROUP BY
date,
server_name
) as tt
group by
tt.thealth_level,
tt.date
order by date,thealth_level
已经给 date,sever_name 增加了 index ,explain 显示能用到 index ,但是速度还是很慢,不知道有什么可以优化的。
数据是每分钟统计服务一个 health_level 指标,目的是按天统计服务数,计算每个 health_level 下有几个服务,一个服务按当天最小 health_level 计算分组。
目前能想到的点就是不要实时计算,每天离线统计昨天的数据,存在另外一个表里。不知道有没有可以优化的地方,能实时读。