暂无图片
暂无图片
3
暂无图片
暂无图片
13
暂无图片

GreptimeDB v0.12 重磅上线|聚焦索引功能和 Metric Engine 的全面优化

GreptimeDB 2025-03-03
108

本次 v0.12 更新聚焦于索引功能和 Metric Engine 的全面优化,同时提升了系统的性能与功能,为《GreptimeDB 2025 年路线图》中的关键更新版本 v0.13 打下了坚实基础。

从 v0.11 到 v0.12,Greptime 团队取得了显著的进展:合并了 125 个 PR,其中包括 47 项功能增强41 项错误修复7 项代码重构6 项性能优化以及大量的测试工作。在此期间,共有 3 位来自社区的个人贡献者提交了 17 次代码贡献

👏 非常感谢团队和各位个人贡献者的努力,也欢迎更多对技术感兴趣的同学加入我们。

索引

引入跳数索引(Skipping Index)

新增的跳数索引大幅降低了存储空间的占用,适合写入吞吐量较高或对存储成本敏感的场景。尽管跳数索引会在某些查询中带来略微的性能损失,但其在存储空间和计算成本上的优势明显。我们特别推荐在 traces 中的 trace_id
字段使用跳数索引。

统一的索引创建语法

在本次更新中,我们统一了倒排索引、跳数索引和全文索引的创建语法,解决了之前语法不一致的问题。现在,用户可以通过列约束来轻松创建不同类型的索引,且支持通过 ALTER
修改已有索引。

语法示例为:

CREATE TABLE IF NOT EXISTS system_metrics (
    host STRING INVERTED INDEX,
    idc STRING SKIPPING INDEX,
    cpu_util DOUBLE,
    memory_util DOUBLE,
    disk_util DOUBLE,
    desc1 STRING,
    desc2 STRING FULLTEXT INDEX,
    ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY(host, idc),
    TIME INDEX(ts)
);

复制


同时,支持通过 ALTER
添加或移除索引:

ALTER TABLE table_name MODIFY COLUMN column_name SET SKIPPING INDEX WITH(granularity = 1024type = 'BLOOM');
ALTER TABLE table_name MODIFY COLUMN column_name UNSET SKIPPING INDEX;

复制

Metric Engine

性能优化

  • 引入稀疏主键编码(目前处于试验阶段,默认关闭):在 metrics 场景的测试中,编码速度提升了 3 倍以上;
  • 批量建表速度优化:在通过 Prometheus Remote-Write 协议写入 metrics
    数据时,GreptimeDB 在首次写入会自动创建大量表,v0.12 的优化将建表速度从分钟级提升至秒级,大幅减少了写入时的阻塞时间;
  • DROP DATABASE
    性能提升:该操作的执行速度也得到了大幅优化,删除数据库的时间从分钟级提升至秒级。

PromQL 兼容性优化

目前,GreptimeDB 完全兼容 Kubernetes 相关监控大盘,具体优化包括:

  • 修复了嵌套的 and unless or operator 未符合预期的行为;
  • 支持 on
    ignoring
    向量匹配;
  • 支持 sort_desc
    sort
    sort_by_label
    sort_by_label_desc
    函数;
  • 修复了值转义问题;
  • 支持子查询(Subquery);
  • 改进了查询报错的用户体验。

不兼容更新

  • GreptimeDB 不再支持存储 Interval 列类型;
  • DateTime 类型调整:不再支持 DateTime 原始类型,改为作为 Timestamp(6) 的别名;
  • 统一不同索引创建的语法;
  • 部分启动参数和配置文件更新,请根据 v0.12 更新文档进行调整。

其他更新

Alter table 增强

新增支持一次性增加多个列:

CREATE TABLE alter_test(i INTEGER, j TIMESTAMP TIME INDEX);

ALTER TABLE alter_test ADD COLUMN "foo" STRING default 'foo' PRIMARY KEYADD COLUMN "bar" STRING default 'bar';

复制


支持 set/unset index(参考上文索引介绍部分的 ALTER
example)。

Metasrv 新增基于 RDS(PostgreSQL)实现的选举组件

Metasrv 对元数据存储的 KvBackend 和选举组件进行了抽象设计,支持不同的后端实现。v0.12 版本前只有一个基于 Etcd 的后端实现,随着基于 PostgreSQL 的 KvBackend 和选举组件的完成,用户可选择 PostgreSQL 作为后端,以应对大规模元数据存储和更高的稳定性需求。

性能提升

TSBS 测试结果

与 v0.11 版本相比,v0.12 在整体性能上有显著提升。写入速率提升近 40%,大多数查询性能提升约 30%~40%。

💜p.s. 参考紫色标注部分,详细参数:
https://github.com/GreptimeTeam/greptimedb/blob/main/docs/benchmarks/tsbs/v0.12.0.md

详细对比数据请见下方:

Amazon EC2



Machinec5d.2xlarge
CPU8 core
Memory16GB
Disk100GB (GP3)
OSUbuntu Server 24.04 LTS

写入性能

Environmentv0.12 Ingest rate (rows/s)v0.11 Ingest rate (rows/s)
EC2 c5d.2xlarge326839.28234620.19

查询性能

Query typev0.12 (ms)v0.11 (ms)
cpu-max-all-112.4614.75
cpu-max-all-824.2030.69
double-groupby-1673.08987.85
double-groupby-5963.991455.95
double-groupby-all1330.052143.96
groupby-orderby-limit952.461353.49
high-cpu-15.088.24
high-cpu-all4638.575312.82
lastpoint591.02576.06
single-groupby-1-1-14.066.01
single-groupby-1-1-124.737.42
single-groupby-1-8-18.2310.20
single-groupby-5-1-14.616.70
single-groupby-5-1-125.618.72
single-groupby-5-8-19.7412.07

日志场景测试报告

日志场景测试报告将在几天内发布,敬请关注官网博客更新。

升级提示

在升级到 v0.12 版本之前,建议先把 GreptimeDB 升级到 v0.11,参考 v0.11 的升级指南获取更多信息:https://docs.greptime.com/zh/0.11/user-guide/administration/upgrade/

最新版本的数据格式与 v0.11.x 完全兼容,用户无需导出或导入数据。但 v0.11.x 与最新版本之间存在一些重大不兼容变更,建议进行一些手动操作来升级您的 GreptimeDB。主要的不兼容变更包括:

配置变更

默认的读写缓存路径已更改为:

  • 读缓存路径:${data_home}/cache/object/read
  • 写缓存路径:${data_home}/cache/object/write
  • cache_path
    仅设置缓存的主目录,默认值为 ${data_home},不建议手动设置,可以让 GreptimeDB 管理缓存路径;
  • 部分 experimental 的写缓存配置项升级为正式配置。


之前的写缓存配置为:

[[region_engine]]
[region_engine.mito]
enable_experimental_write_cache = true
experimental_write_cache_size = "10G"
experimental_write_cache_ttl = "8h"
experimental_write_cache_path = "/path/to/write/cache"

复制


现在需要改为:

[[region_engine]]
[region_engine.mito]
write_cache_size = "10G"
write_cache_ttl = "8h"
# 不再需要手动设置 write_cache_path。
# write_cache_path = "${data_home}"

复制

gRPC 配置项变更

在 v0.12 前,gRPC 配置项为:

## The gRPC server options.
[grpc]
## The address to bind the gRPC server.
addr = "127.0.0.1:3001"
## The hostname advertised to the metasrv,
## and used for connections from outside the host
hostname = "127.0.0.1:3001"

复制


v0.12 更改为下列配置:

## The gRPC server options.
[grpc]
## The address to bind the gRPC server.
bind_addr = "127.0.0.1:3001"
## The address advertised to the metasrv, and used for connections from outside the host.
## If left empty or unset, the server will automatically use the IP address of the first network interface
## on the host, with the same port number as the one specified in `grpc.bind_addr`.
server_addr = "127.0.0.1:3001"

复制


本次更新包含了两个配置项变更:

  • addr -> bind_addr
    ,表示 grpc server 的绑定地址;
  • hostname
    -> server_addr
    ,是广播给其他节点的地址,外部通过该地址与当前节点建立连接并通信。


⚠️ 以上修改旨在确保配置项语义清晰明确。

手动创建索引

从 v0.12 开始,GreptimeDB 将倒排索引与主键解耦,不会再自动为主键创建倒排索引,如有需求可以手动创建。请注意此项变更,避免出现查询性能回退,手动设置索引方法如下:

ALTER TABLE `cpu` MODIFY COLUMN `region` SET INVERTED INDEX;

SHOW INDEX FROM `cpu`;


+-------+------------+-------------------------+--------------+-------------+-----------+-------------+----------+--------+------+-----------------------------------------------------+---------+---------------+---------+------------+
| Table | Non_unique | Key_name                | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type                                          | Comment | Index_comment | Visible | Expression |
+-------+------------+-------------------------+--------------+-------------+-----------+-------------+----------+--------+------+-----------------------------------------------------+---------+---------------+---------+------------+
| cpu   |          1 | PRIMARY                 |            1 | hostname    | A         |        NULL |     NULL |   NULL | YES  | greptime-primary-key-v1                             |         |               | YES     |       NULL |
| cpu   |          1 | PRIMARY, INVERTED INDEX |            2 | region      | A         |        NULL |     NULL |   NULL | YES  | greptime-primary-key-v1, greptime-inverted-index-v1 |         |               | YES     |       NULL |
| cpu   |          1 | TIME INDEX              |            1 | ts          | A         |        NULL |     NULL |   NULL | NO   |                                                     |         |               | YES     |       NULL |
+-------+------------+-------------------------+--------------+-------------+-----------+-------------+----------+--------+------+-----------------------------------------------------+---------+---------------+---------+------------+

复制

建表语句统一索引创建语法

v0.12 中更改了 CREATE TABLE
语句,只能使用列约束来创建倒排、跳数和全文索引。在创建索引时,必须在索引类型后指定 INDEX
关键字。


新的写法为:

CREATE TABLE IF NOT EXISTS `logs` (
  message STRING NULL FULLTEXT INDEX WITH(analyzer = 'English', case_sensitive = 'false'),
  ts TIMESTAMP(9NOT NULL,
  TIME INDEX (ts),
);

复制


详情请参考官方最新升级文档:
https://docs.greptime.com/zh/user-guide/administration/upgrade

未来展望

根据一月发布的《GreptimeDB 2025 Roadmap》,GreptimeDB 将持续推进一系列重要功能的更新与优化。下一个版本 v0.13 将聚焦于日志和 Flow Engine 的功能完善,并推出更低成本的全文索引实现。

此外,我们预计将于 6 月份发布 v1.0(General Availability,GA 版本),这是 GreptimeDB 走向成熟的关键里程碑,将涵盖数据库基础能力、性能优化、Log Engine 和 Metric Engine 等多方面的重大更新。

p.s. 我们将陆续推出本次更新的 benchmark 报告,欢迎持续关注。


关于 Greptime

Greptime 格睿科技专注于为可观测、物联网及车联网等领域提供实时、高效的数据存储和分析服务,帮助客户挖掘数据的深层价值。目前基于云原生的时序数据库 GreptimeDB 已经衍生出多款适合不同用户的解决方案,更多信息或 demo 展示请联系下方小助手(微信号:greptime)。

欢迎对开源感兴趣的朋友们参与贡献和讨论,从带有 good first issue 标签的 issue 开始你的开源之旅吧~期待在开源社群里遇见你!添加小助手微信即可加入“技术交流群”与志同道合的朋友们面对面交流哦~


Star us on GitHub Now: https://github.com/GreptimeTeam/greptimedb
官网:https://greptime.cn/
文档:https://docs.greptime.cn/
Twitter: https://twitter.com/Greptime
Slack: https://greptime.com/slack
LinkedIn: https://www.linkedin.com/company/greptime/

往期精彩文章:

点击「阅读原文」,立即体验 GreptimeDB!

最后修改时间:2025-03-03 10:42:26
文章转载自GreptimeDB,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

微笑
暂无图片
24天前
评论
暂无图片 0
云服务支持GaussDBAI智能问答
24天前
暂无图片 点赞
评论
DonACE
暂无图片
25天前
评论
暂无图片 0
GreptimeDB v0.12 重磅上线|聚焦索引功能和 Metric Engine 的全面优化
25天前
暂无图片 点赞
评论
不装了
暂无图片
25天前
评论
暂无图片 0
科拓业务数据量大
25天前
暂无图片 点赞
评论
海贼王
暂无图片
25天前
评论
暂无图片 0
多租户方式管理数据
25天前
暂无图片 点赞
评论
巴比龙
暂无图片
25天前
评论
暂无图片 0
科蓝SUNDB分布式数据库管理系统v5.0入围
25天前
暂无图片 点赞
评论
微笑
暂无图片
25天前
评论
暂无图片 0
火山引擎ByteHouse助力抖音集团降本60%
25天前
暂无图片 点赞
评论
查看更多 >