Skip to content
On this page
Product
2026-02-04

Region 重分区:GreptimeDB v1.0 RC1 发布

GreptimeDB v1.0.0-rc.1 引入 Region 重分区功能,支持运行时动态调整分区;Metric Engine 主键过滤性能提升 20-90 倍;以及大量错误修复,持续迈向 v1.0 GA。

去年 11 月,我们公布了 GreptimeDB v1.0 的主要亮点及发布计划并发布了 4 个 beta 版本。本周,我们正式发布了 v1.0.0 的首个 RC 版本——这是迈向 v1.0 GA 的关键一步,标志着 GreptimeDB 功能冻结,正式进入稳定性验证阶段。

开发数据概览

以下是 rc.1 的开发统计(2025-12-29 → 2026-02-02,共 35 天):

  • 100 个 PR 合并,涉及 595 个文件
  • 代码变更:+40,116 / -9,157
  • 12 位贡献者参与

主要改进分布:

  • 34 项功能增强:Region 重分区、查询追踪改进、json_get 函数增强等
  • 28 项错误修复:Pipeline 加载、时间戳索引推断、histogram 结果修正等
  • 4 项代码重构:移除 region_numbers、重构 CreateTableProcedure
  • 3 项性能优化:主键过滤加速、PromQL 查询优化等

特别感谢本次参与的 12 位贡献者!

Contributors

我们诚邀更多对可观测性数据库感兴趣的开发者加入 GreptimeDB 社区。

亮点更新

Region 重分区

随着业务发展,表的数据分布和热点模式可能发生变化。比如从单分区表需要扩展为分布式的分区表,或者分区表需要增加更多分区来承担更大的读写负载,或者合并小分区来减少数据碎片等。

本次 RC1 引入了 Region 重分区功能,允许用户在运行时动态调整分区规则和数据分布,无需重建表或迁移数据。

Split — 将一个分区拆分为多个,适用于单分区数据量过大或出现热点的场景:

sql
ALTER TABLE sensor_readings SPLIT PARTITION (
    device_id < 100
) INTO (
    device_id < 100 AND area < 'South',
    device_id < 100 AND area >= 'South'
);

Merge — 将多个分区合并为一个,适用于分区过细、资源浪费的场景,可提升资源利用率和性能:

sql
ALTER TABLE sensor_readings MERGE PARTITION (
    device_id < 100 AND area < 'South',
    device_id < 100 AND area >= 'South'
);

同时支持通过 WITH 子句控制执行行为:

sql
ALTER TABLE sensor_readings SPLIT PARTITION (
    device_id < 100
) INTO (
    device_id < 100 AND area < 'South',
    device_id < 100 AND area >= 'South'
) WITH (
    TIMEOUT = '5m',
    WAIT = false
);
  • WAIT = false 时,语句立即返回 procedure_id,可通过 ADMIN procedure_state(procedure_id) 查询执行状态
  • TIMEOUT 控制操作的整体时间限制

使用限制:

  • 仅支持分布式集群
  • 需启用共享对象存储和 GC
  • 所有 Datanode 必须能访问同一对象存储

Metric Engine 主键过滤性能优化

RC1 为 Metric Engine 引入了主键过滤的"快速路径"优化。通过直接比较主键值的字节编码表示(使用 memcomparable),避免了逐值解码和物化的开销。

微基准测试结果:

场景优化后优化前提升倍数
eq/dense13.65 ns275.98 ns20.2×
gt/dense14.12 ns312.15 ns22.1×
lt_eq/dense12.77 ns268.72 ns21.0×
or_eq/dense14.16 ns1.29 µs91.1×
eq/sparse101.60 ns376.19 ns3.7×
gt/sparse108.18 ns370.65 ns3.4×

在默认 dense codec 场景下,主键过滤性能提升 20–90 倍;sparse codec 场景也有 3–11 倍的提升。

其他改进

  • json_get 增强:支持用户指定返回类型的 json_get UDF
  • PromQL 优化:使用 TSID 优化 PromQL planner,跳过不必要的 label 列
  • Query Trace 调优:改进查询追踪,提升可观测性
  • BulkMemtable 优化:compact parts 时无需编码为 Parquet,减少开销
  • MySQL/PostgreSQL 协议:增加更多函数,提升兼容性
  • Flow 增强:支持 last_non_null 函数
  • 升级 PromQL Parser:部分兼容 Prometheus 3.0 语法

重要修复

  • 写入停滞修复:修复某些情况下 flush 逻辑导致的 write stall 无法恢复问题
  • Pipeline 加载:修复 pipeline 加载问题
  • 时间戳索引推断:修复不正确的 timestamp index 推断
  • Histogram 结果:修正 histogram 查询结果
  • JSON Unicode 解析:正确解析包含 unicode code point literal 的 JSON 字符串
  • 修复 COPY FROM:修复在 CSV 格式下可能没有正确导入数据的 bug

兼容性说明

本版本包含以下 breaking changes:

1. Heartbeat 配置变更

Heartbeat 配置现在统一由 Metasrv 管理。如果之前在 datanode.toml 中配置了 [heartbeat] 相关内容,需要移除。

现在通过 Metasrv 的 heartbeat_interval 选项统一控制:

  • Frontend 心跳间隔 = 6 × heartbeat_interval
  • Flownode/Datanode 心跳间隔 = 1 × heartbeat_interval

例如:如果 heartbeat_interval 设置为 3s,则 Frontend 心跳间隔为 18s,Flownode/Datanode 心跳间隔为 3s

注意:在绝大多数情况下,你不需要修改这个参数,保持默认值即可。

2. 移除 region_numbers 字段

TableMeta.region_numbers 字段已被移除。

影响说明:升级到新版本后,降级到旧版本可能会遇到兼容性问题。 旧版本在读取新版本生成的数据时可能会失败或报错,因为 region_numbers 字段不再存在。

结语

完整发行日志请查看 GitHub Release

感谢所有贡献者和用户的支持,我们将继续按计划稳步迈向 1.0 GA。

加入我们的社区

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