Skip to content
On this page
双周报
2025-12-15

MySQL/PG 兼容性与 Scanner 指标优化|Greptime 双周精选 - No. 72

增强 MySQL 和 PostgreSQL 兼容性,提升生态系统集成能力。通过将 mur3 替换为更快的 fxhash 算法,优化了 TSID 生成性能。新增详细的扫描器指标,用于改进查询性能监控

内容概述

开发周期: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_descriptioncol_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 响应时经常看不到具体原因,不好排查,所以建议在服务端的错误转换流程里把错误顺便打到日志里(比如在 ErrorIntoResponse 里按需记录)。同时也提到有些请求路径不会走统一的 Error 转换;另外 axum/tower-http 对部分 4xx(如 400)不算 failure,框架层的错误也不太好抓,因此还需要把相关链路再梳理一遍,必要时加上 remote address 等信息方便定位。

  • 关键词:HTTP error logging, Observability, axum/tower-http, IntoResponse

  • 难度:Medium

加入我们的社区

获取 Greptime 最新更新,并与其他用户讨论。