如何在Grafana中实现MySQL表行数随时间的累计增长可视化
在Grafana中绘制MySQL表的累计行数增长曲线
1. 编写累计统计的SQL查询
首先需要通过SQL计算每日新增行数,并生成累计值。根据你的表结构,使用窗口函数SUM() OVER()可以轻松实现累计统计:
基础版查询(无数据补全)
SELECT DATE(Timestamp) AS time, COUNT(ID) AS daily_new, SUM(COUNT(ID)) OVER (ORDER BY DATE(Timestamp)) AS cumulative_total FROM your_table_name -- 替换为你的实际表名 GROUP BY DATE(Timestamp) ORDER BY time
补全日历版查询(解决无数据日期断层)
如果存在某天没有新增数据的情况,上面的查询会跳过该日期,导致图表出现断层。可以用生成连续日期的方式补全:
WITH date_range AS ( -- 生成你需要的日期范围,这里示例从2023-06-21开始的6天,可按需调整 SELECT DATE_ADD('2023-06-21', INTERVAL seq DAY) AS date FROM ( SELECT 0 AS seq UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 ) AS seqs ) SELECT dr.date AS time, COALESCE(COUNT(t.ID), 0) AS daily_new, SUM(COALESCE(COUNT(t.ID), 0)) OVER (ORDER BY dr.date) AS cumulative_total FROM date_range dr LEFT JOIN your_table_name t ON DATE(t.Timestamp) = dr.date -- 替换为实际表名 GROUP BY dr.date ORDER BY dr.date
2. Grafana面板配置步骤
- 连接数据源:确保已在Grafana中添加并测试通过MySQL数据源,指向你的数据库。
- 创建Time Series面板:新建面板时选择「Time series」类型(旧版本可选「Graph」)。
- 配置查询:将上面的SQL语句粘贴到查询编辑器中,替换表名和日期范围。
- 调整字段显示:在面板的「Fields」选项卡中,选择
cumulative_total字段,设置为Line类型;若不需要显示每日新增,可隐藏daily_new字段。 - 优化图表样式:
- 在「Visualization」选项卡中,开启「Smooth」将线条调整为平滑曲线,模拟股票走势效果。
- 设置Y轴标题为「累计行数」,X轴自动识别日期格式。
- 根据数据时间范围调整面板的时间过滤器,确保显示完整的统计周期。
内容的提问来源于stack exchange,提问作者tera_789
相关产品推荐
相关产品推荐

