095、检测结果存储与分析平台:PostgreSQL/ClickHouse + Grafana 搭建检测数据分析

发布时间:2026/6/5 23:25:35
095、检测结果存储与分析平台:PostgreSQL/ClickHouse + Grafana 搭建检测数据分析
095、检测结果存储与分析平台:PostgreSQL/ClickHouse + Grafana 搭建检测数据分析上周三凌晨两点,我盯着Grafana面板上那条突然断崖式下跌的曲线,后背发凉。生产环境的目标检测服务在白天跑得好好的,夜间流量低谷时,检测框数量却骤降了40%。直觉告诉我不是模型崩了——模型崩了应该是全零,而不是缓慢下降。后来查了三天日志,发现是检测结果写入MySQL时,因为单表数据量超过两千万行,写入性能开始抖动,部分结果被业务层的超时机制直接丢弃了。那之后我彻底把检测结果存储从MySQL迁到了ClickHouse,配合PostgreSQL做元数据管理,再用Grafana搭了实时看板。今天这篇笔记,就是那次重构的完整记录。为什么不用MySQL存检测结果很多同学喜欢把检测结果一股脑塞进MySQL,图省事。但检测结果的数据特征和业务数据完全不同:每张图片可能产生几十到几百个检测框,每个框包含类别、置信度、坐标、时间戳、设备ID等字段。一天一亿条记录是常态。MySQL在这种写入压力下,索引维护成本会指数级上升,查询延迟从毫秒级变成秒级,最后变成“查询超时”。我现在的方案是:PostgreSQL存元数据,ClickHouse存时序检测结果。PostgreSQL负责管理模型版本、设备信息、任务配置这些低频变更但需要强一致性的数据;ClickHouse负责接收每秒成千上万条检测结果,做聚合分析。两者通过Grafana统一展示。