select
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 计算分组。
目前能想到的点就是不要实时计算,每天离线统计昨天的数据,存在另外一个表里。不知道有没有可以优化的地方,能实时读。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.