内容概述
开发周期:2025-12-01 - 2025-12-14
GreptimeDB v1.0.0-beta.3 已发布! 本版本简化了缓存配置、新增 manifest 文件缓存以加速元数据访问、改进了 PromQL 正确性和直方图处理,并增强了 PG/MySQL/Grafana 兼容性。推荐升级到此版本。
GreptimeDB 作为一个持续成长的开源项目,离不开全球社区贡献者的支持,感谢大家!
近期主要更新:
- 增强 MySQL 和 PostgreSQL 兼容性,提升生态系统集成能力
- 通过将 mur3 替换为更快的 fxhash 算法,优化了 TSID 生成性能
- 新增详细的扫描器指标,用于改进查询性能监控
建议使用旧版本的用户升级到最新版本以获得更好的体验。
贡献者
过去两周,共有 9 位贡献者合并了 18 个 PR。
PR 亮点
db#7315 feat!: improve mysql/pg compatibility
此 PR 通过实现关键数据库函数并改进客户端工具集成,显著增强了 GreptimeDB 的 MySQL 和 PostgreSQL 协议兼容性。改进内容包括:添加 MySQL 的 IF() 函数并支持适当的真值语义、PostgreSQL 兼容性函数(obj_description、col_description 等)、MySQL 兼容的 SHOW TABLES 列命名、支持 SHOW WARNINGS 的会话级警告管理,以及增强 INFORMATION_SCHEMA.PARTITIONS 表结构,以更好地支持 JDBC 连接器和 StarRocks、DBeaver 等工具,以及标准的 MySQL/PostgreSQL 客户端。
db#7336 feat: add more verbose metrics to scanners
本 PR 通过为扫描器添加全面的指标收集功能来增强 GreptimeDB 的查询性能分析能力,包括索引操作(倒排索引、布隆过滤器、全文索引)、SST 文件扫描、Parquet 数据获取以及元数据缓存性能的详细统计信息。这些详细指标在"EXPLAIN ANALYZE VERBOSE"操作期间收集,为开发者和管理员提供查询执行瓶颈的细粒度洞察,同时不影响正常查询性能。
db#7326 feat: implement a cache for manifest files
这个 PR 为 GreptimeDB 中的 manifest 文件实现了写入缓存功能,将它们存储在 cache/object/manifest/ 目录下,以提升访问这些关键元数据文件时的性能。该实现包括自动清理空目录功能,并保持原有的文件路径结构而非使用哈希路径,确保 manifest 文件的完整性,同时提供缓存带来的性能优势。
db#7316 perf(metric-engine)!: Replace mur3 with fxhash for faster TSID generation
该 PR 通过将 mur3 哈希算法替换为 fxhash 并实现 fast-path 优化,对 GreptimeDB Metric Engine 中的 TSID(Time Series ID)生成进行了优化。该优化为不含 null 值的行预先计算标签名称的哈希值,再对 labels 的值进行哈希计算。这些改动为典型使用场景带来了 5-6 倍的性能提升。该 TSID 的计算方式引入了 breaking change,因为新的哈希算法会导致现有的 TSID 值发生变化。该 breaking change 对用户影响较小,只有查询时间范围涉及 TSID 计算方式切换的时间点才可能受影响,用户可直接升级。
Good First Issue
Issue#7328 HTTP handler error log improvement
此 issue 主要想把 GreptimeDB 的 HTTP 报错日志补齐:现在客户端遇到非 200 响应时经常看不到具体原因,不好排查,所以建议在服务端的错误转换流程里把错误顺便打到日志里(比如在 Error 的 IntoResponse 里按需记录)。同时也提到有些请求路径不会走统一的 Error 转换;另外 axum/tower-http 对部分 4xx(如 400)不算 failure,框架层的错误也不太好抓,因此还需要把相关链路再梳理一遍,必要时加上 remote address 等信息方便定位。
关键词:HTTP error logging, Observability, axum/tower-http, IntoResponse
难度:Medium


