Grafana 通过配置支持 SQL 的数据源(如 MySQL、PostgreSQL 等)直接执行 SQL 查询,无需中间同步组件或时序数据限制;关键前提是数据源必须原生支持 SQL。
Grafana 使用 SQL 查询方式连接数据源,本质是通过配置支持 SQL 的数据源(如 MySQL、PostgreSQL、SQL Server、Oracle 等),然后在面板查询中直接编写标准或方言适配的 SQL 语句获取数据。它不依赖中间同步组件,也不要求数据必须是时序型——只要数据库能响应 SQL,Grafana 就能查、能展示。
关键前提:数据源本身要支持原生 SQL 查询
Grafana 最新插件中,MySQL、PostgreSQL、Microsoft SQL Server、Oracle、TDengine、ClickHouse 等都内置了 SQL 查询能力;而 Prometheus、InfluxDB 等则使用各自专属查询语言(PromQL / Flux),不能写 SQL。
127.0.0.1:3306)maxOpen,但注意 PostgreSQL 场景下 Grafana 实际不复用连接)⚠️ 生产环境务必避免使用 root 或高权限账号;应单独创建 grafana_ro 类只读用户,并 GRANT SELECT ON your_db.your_table TO 'grafana_ro'@'%'
SELECT DATE(create_time) AS day,COUNT(*) AS total_orders,ROUND(AVG(amount), 2) AS avg_amountFROM orders WHERE create_time >= $__timeFilter(create_time)GROUP BY dayORDER BY day
$__timeFilter(create_time) 是 Grafana 内置宏,会自动替换成当前时间范围筛选条件(如 create_time BETWEEN '2026-08-12 00:00:00' AND '2026-08-13 00:00:00'),无需手动拼接$__timeGroup(time_col, '1h')(按小时分组)、$__timeEpoch(time_col)(转毫秒时间戳)、$__timeFrom() / $__timeTo()(起止时间)✅ 查询结果列名将直接作为表格字段或图表坐标轴标签;时间列需显式别名为 time 或用 ($__time) 宏标记,才能被时序图识别
? 注意:SQL 查询返回的列数和类型决定可视化是否可用。例如折线图需要 time + value 两列;饼图需要 name + value 两列;表格则无此限制
例如定义变量 region,SQL 中写 WHERE region = '$region',即可下拉切换地区查看不同数据
SELECT u.name, COUNT(o.id) FROM users u LEFT JOIN orders o ON u.id = o.user_id GROUP BY u.id
如 PostgreSQL 可用 ROW_NUMBER() OVER (PARTITION BY ...),MySQL 8.0+ 同样支持
在数据源设置中启用 Cache mode: Enabled,对相同时间范围+变量组合的查询自动复用结果,减轻 DB 压力
不复杂但容易忽略
TPLink TLWDR4320 无线路由器IP带宽控制功能分配带宽设置方法
SQL Server 2008及更高版本数据库恢复做法之日志尾部备份实用指南
TPLink TLWDR4320 无线路由器控制管控小孩上网行为设置
TPLink TLWDR4320 无线路由器打印服务器设置指南
TPLink TLWDR8620 52 无线路由器当作交换机使用教程
TPLink TLWDR8620 52 无线路由器映射服务器到外网操作方法