diff --git a/zh_CN/admin/configuration-fields/ts-engine.md b/zh_CN/admin/configuration-fields/ts-engine.md index aeba083..1577fb9 100644 --- a/zh_CN/admin/configuration-fields/ts-engine.md +++ b/zh_CN/admin/configuration-fields/ts-engine.md @@ -18,8 +18,12 @@ # 缓存 SST 文件的结构化元信息,用于条件过滤以加速查询。 # 缓存配置过小,在文件较多时,可能导致缓存频繁换入换出,影响性能,可通过监控面板观察缓存的使用情况。 # 关于如何配置该缓存大小,可参考[高性能查询](https://docs.datalayers.cn/datalayers/latest/development-guide/high-performance-reading.html) -# Default: 512M -meta_cache_size = "512M" +# Default: 2GB +meta_cache_size = "2GB" + +# 配置 LAST CACHE 最大可使用内存,设置为 0 表示禁用 LAST CACHE. +# Default: 2GB +last_cache_size = "2GB" # 服务启动时,预加载最近生成的文件的元信息。 # 在`meta_cache_size` 配置的缓存容量足够的情况下,系统将加载所有 SST 文件的结构化元信息 diff --git a/zh_CN/development-guide/high-performance-reading.md b/zh_CN/development-guide/high-performance-reading.md index 99d6d4d..8527fb7 100644 --- a/zh_CN/development-guide/high-performance-reading.md +++ b/zh_CN/development-guide/high-performance-reading.md @@ -49,7 +49,7 @@ path = "/var/lib/datalayers/cache/file" 注:当内存、磁盘设置较小、且查询场景无热点数据,导致缓存数据被高频换入、换出影响查询性能。 -## Hints +## SQL Hints SQL Hints 是一种在 SQL 查询中嵌入的特殊指令,用于指导数据库优化器选择特定的执行计划,从而提升查询性能或解决优化器的决策偏差。Datalayers 在 v2.3.9 开始支持该特性。 @@ -63,4 +63,42 @@ SELECT /*+ SET_VAR(parallel_degree=1) */ * FROM table; 在查询时,Datalayers 默认策略会尝试调度更多的 CPU 资源,通过并行化将任务拆分为多个子任务(如数据分片、并行扫描、聚合)来加速查询。这种逻辑对于数据量较大时有显著优势,但对于小查询则会带来一定的副作用。因此在小查询时通过指定并行度,可极大提升查询 QPS 与性能。在时序场景,一般来说查询某设备一小段时间范围内的数据,建议设置 `parallel_degree=1`,可显著提升系统查询的 QPS。 +## LAST CACHE +在时序场景中,经常需要查询 点/设备 最新一行的数据记录,用于追踪设备最新状态。Datalayers 在 `v2.3.12` 版本中,引入 LAST CACHE,用于缓存设备、点位最新一行数据,以加速查询。 +如需启用 LAST CACHE,需通过以下两个步骤: + +### 配置 LAST CACHE + +```toml +# Cache size for last value. Setting it to 0 to disable the cache. + # Default: 2GB +last_cache_size = "2GB" +``` +该配置表示当前节点,LAST CACHE 最多使用 2GB 内存。 + +### 启用 LAST CACHE + +```sql +CREATE TABLE `t` ( + `ts` TIMESTAMP(9) NOT NULL DEFAULT CURRENT_TIMESTAMP, + `sid` INT32 NOT NULL, + `value` REAL, + `flag` INT8, + TIMESTAMP KEY(`ts`) +) +PARTITION BY HASH (`sid`) PARTITIONS 2 +ENGINE=TimeSeries +WITH ( + ENABLE_LAST_CACHE=TRUE, + UPDATE_MODE=APPEND +) +``` +在 table options 中,将ENABLE_LAST_CACHE设置为 true,即为该 table 启动了 LAST CACHE。 + +通过上述配置后,即可对下面相关 SQL 进行加速查询。 + +- select * from t where sid = 1 order by ts desc limit 1 +- select value from t where sid = 1 or sid = 2 order by ts desc limit 1 +- select last_value(value order by ts) from t where sid in (1,2,3) +- select first_value(value order by ts desc) from t where sid = 1 or sid in (2,3) diff --git a/zh_CN/releases/changes.md b/zh_CN/releases/changes.md index a4726c4..5e35442 100644 --- a/zh_CN/releases/changes.md +++ b/zh_CN/releases/changes.md @@ -1,5 +1,28 @@ # CHANGELOG +## 2.3.12 + +发布日期: 2025-09-24 + +## 🚀 新功能 +### LAST CACHE(时序引擎最新值缓存) +- **核心功能**:为时序引擎新增点位最新值缓存机制,显著提升最新数据查询速度 +- **性能提升**:查询性能提升数十倍,特别适用于高频访问最新数据的场景(如实时监控大屏) + +## ⚡ 性能提升 +### 查询优化 +- 优化查询路径逻辑,在 **高并发场景下** 查询 QPS 提升 **10%+** + +### 内存优化 +- 调整元数据缓存策略,降低服务运行内存占用 + +## 🔍 其它 +- 提供更多维度的运行指标,便于实时观测系统健康状态 +- 基础镜像从 **Ubuntu 22.04** 升级至 **Ubuntu 24.04** +- 调整日志格式,关键信息更清晰易读,便于快速定位问题 +- 优化进程退出逻辑 +- 关系引擎的基础框架代码合入 + ## 2.3.11 发布日期: 2025-09-08 diff --git a/zh_CN/sql-reference/table-engine/timeseries.md b/zh_CN/sql-reference/table-engine/timeseries.md index aee61b3..e1c3023 100644 --- a/zh_CN/sql-reference/table-engine/timeseries.md +++ b/zh_CN/sql-reference/table-engine/timeseries.md @@ -60,6 +60,7 @@ PARTITION BY HASH(column_list) PARTITIONS 2 | COMPACT_MAX_FILE_SIZE | 可合并文件的最大尺寸,缺省值为:`300MiB`,支持单位:B、KiB、MiB、GiB、TiB、PiB。 此设置表示当待合并文件大小超过时,不再合并这个文件,注意这个值不是对目标文件的强制大小限制,允许出现合并结果文件大小大于此设置。 | | COMPACT_TIME | 非活跃窗口合并的工作时间,缺省值为当前系统设置时区的 `02:00~06:00`。支持 UTC 时区设置形式如: UTC,02:00\~06:00 支持多时间窗口设置形式如: UTC,02:00\~04:00,13:00\~15:00,不允许多个时间窗口重叠,允许时间跨凌晨如:23:00\~02:00 | | COMPACT_MODE | Compaction 支持的模式,缺省值为:`[COMPACT,TTL]`,支持选项:COMPACT,TTL,Delta,可以组合使用。当组合多个选项时,需以'[]'括起来,中间以英文逗号分隔,例如: `[COMPACT,TTL,Delta]`。如需关闭 Compaction,则指定为 Disable | +| ENABLE_LAST_CACHE | 是否缓存点位最新的数据,缺少值为:`false`。启用该功能后,对于查询点位最新值的场景,性能将会有巨大的提升 | ### 示例1